В приведенном ниже коде переменная ‘id’ недоступна в классе Horse, это проблема наследования? Проблема с модификаторами доступа? Любая помощь с благодарностью.
class Animal
{
private:
int id;
};
class Horse : public Animal
{
public:
Horse(){
if((id % 2) == 1) { id++ };
}
};
учебный класс Horse
В этом случае наследует только открытые и защищенные элементы, если вы используете:
class Horse : public Animal
наследовать id
Вы можете определить этот закрытый элемент в Animal
класс как защищенный:
class Animal
{
protected:
int id;
};
Вы, вероятно, хотите id
быть protected
и не private
, затем. Или лучше использовать тот метод доступа, который вы написали …
id
является частным Animal
и, следовательно, недоступны для Horse
, Удовлетворительный дизайн будет иметь доступ id
через getID()
, хотя вам понадобится метод установки, а также существующий метод получения.
объявление переменной как закрытой приведет к тому, что только класс, в котором объявлена переменная, может получить к ней доступ, если вы хотите, чтобы классы, которые наследуют базовые классы, могли также иметь доступ к переменной, используйте параметр protected