#c #class #inheritance #new-operator #public-method
#c #класс #наследование #new-operator #public-method
Вопрос:
У меня есть класс Airplane:
class Airplane {
private:
int value;
public:
// some public functions that arent relevant
};
а затем другой класс, производный от Airplane
class Model : public Airplane {
private:
bool fla&;
public:
// some functions
};
Что мне нужно сделать, это создать указатель типа airplane, который указывает на дочерний класс, он же model.
Вот так: Airplane* A = new Model();
Затем я могу использовать A-&&t; functions для доступа к общедоступным функциям airplane для изменения элементов личных данных airplane.
Моя проблема в том, что мне нужно изменить элементы личных данных модели. Я создал открытые функции-члены в модели, чтобы изменить закрытые члены модели, но это не позволяет мне выполнять A-&&t;modelfunctions. Есть ли способ изменить закрытые элементы модели в моей системе выше?
Моими инструкциями было создать динамический экземпляр модели и сохранить адрес в указателе самолета. Я хочу сделать это, имея возможность изменять частные переменные из обоих классов либо напрямую, либо через общедоступные функции. Прямо сейчас я могу изменить «значение» из airplane, но не «флаг» из model, используя систему Airplane* A = new Model();.
Спасибо.
Комментарии:
1. Вам нужно сделать
Airplane
полиморфными, определив виртуальные функции-члены , а затем переопределить их вModel
классе.2. Разве вы не можете сделать переменные защищенными, а не частными? Не будут ли они по-прежнему доступны производному классу?
3. Не уверен, что полиморфизм помогает. Он хочет получить доступ к переменным как из модели, так и из самолета.
4. @AndrewTruckle переопределение может обращаться к переменным в
Model
и делегировать доступ к переменным вAirplane
, вызывая базовую функцию.5. @PatrickRoberts не могли бы вы привести пример того, как я делаю их виртуальными? Я все еще новичок в c , поэтому не уверен, как это сделать. Спасибо.