在下面的代码中,变量“id”在 Horse 类中是不可访问的,这是继承问题吗?访问修饰符问题?任何帮助是极大的赞赏。
class Animal
{
private:
int id;
};
class Horse : public Animal
{
public:
Horse(){
if((id % 2) == 1) { id++ };
}
};
在下面的代码中,变量“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()
,尽管您需要一个 setter 以及现有的 getter 方法。