2013-06-13 5 views
-2

В приведенном ниже коде переменная 'id' недоступна в классе Horse, это проблема наследования? Модификаторы доступа? Любая помощь приветствуется.Переменная недоступна?

class Animal 
{ 
private: 
    int id; 
}; 

class Horse : public Animal 
{ 
public: 
    Horse(){ 
     if((id % 2) == 1) { id++ }; 
    } 
}; 
+4

Вы понимаете, что 'id' является' частным', правильно? Вы знаете, что такое «личное», правильно? –

ответ

3

класс Horse только наследует открытые и защищенные элементы в этом случае, если вы используете:

class Horse : public Animal 

наследовать id, вы можете определить этот частный элемент в Animal класса, защищаемой:

class Animal 
{ 
protected: 
    int id; 
}; 
+0

Привет, друг, оцените. – Emmett

+0

@Emmett принять ответ, пожалуйста, пожалуйста. –

0

Вы, вероятно, хотите id быть protected и не private, затем. Или лучше, используйте аксессуар, который вы написали ...

0

id является закрытым для Animal и поэтому недоступен для Horse. Удовлетворительный дизайн будет заключаться в доступе id до getID(), хотя вам нужен сеттер, а также существующий метод получения.

0

декларирование переменная как частная приведет к тому, что только класс, объявленный переменной, может получить к ней доступ, если вы хотите, чтобы классы, наследующие базовые классы, могли также обращаться к переменной, используйте защиту д.

Смежные вопросы