Дорогие StackOverflowers,
Я учусь кодировать объектно-ориентированный C++. Для проекта я программирую esp32 с использованием ядра Arduino. У меня такая проблема:
У меня есть класс ULAM, который содержит массив объектов класса program и объект класса screen.
class ULAM {
private:
UlamProgram programs[10];
UlamScreen screen;
}
класс program имеет переменную publicString name
class UlamProgram {
public:
String name;
}
из функции в screen я хочу получить доступ к переменной String name
void UlamScreen::programScreen() {
tft.println(programs[0].name);
}
Как я могу получить доступ к этой переменной? Я уже пробовал пару вещей, но не могу заставить их работать.
Я пытался передать массив programs в качестве параметра конструктору screen, но я не могу понять, как именно это сделать. Помощь будет очень признательна.
поскольку вы объявили программы частными, вы не можете получить доступ к массиву, поэтому вы добавляете функцию доступа в ULAM, например. public: UlamProgram& ULAM::Programs(int index) { return programs[index];}, а затем вызовите его в своей функции programScreen.





вы не можете получить доступ к частным переменным вне класса, вам необходимо добавить для этого геттер в классе
ULAM, который будет возвращать указатель или ссылку (лучше всего сделать ее константной) на эти данные. Проблема не в том, что вы не можете получить доступ кname, но вы не можете получить доступ кprograms, поскольку это частная переменная в другом классе.