在下面的代码中,变量'id'在类Horse中无法访问,这是继承问题吗?访问修饰符问题?非常感谢任何帮助。
class Animal
{
private:
int id;
};
class Horse : public Animal
{
public:
Horse(){
if((id % 2) == 1) { id++ };
}
};
答案 0 :(得分:3)
类Horse
只会继承public和protected元素:
class Horse : public Animal
要继承id
,您可以在Animal
类中将此私有元素定义为protected:
class Animal
{
protected:
int id;
};
答案 1 :(得分:0)
您可能希望id
为protected
而不是private
。或者更好,使用您编写的访问器......
答案 2 :(得分:0)
id
对Animal
是私有的,因此Horse
无法访问。一个令人满意的设计是访问id
到getID()
,但您需要一个setter以及现有的getter方法。
答案 3 :(得分:0)
将变量声明为private将给出一个结果,即只有声明变量的类才能访问它,如果你希望继承基类的类能够访问变量,则使用protected。