-2

在下面的代码中,变量“id”在 Horse 类中是不可访问的,这是继承问题吗?访问修饰符问题?任何帮助是极大的赞赏。

class Animal
{
private:
   int id;
};

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

4 回答 4

3

在这种情况下,如果您使用,类Horse仅继承公共和受保护的元素:

class Horse : public Animal

要继承,您可以在类中id将此私有元素定义为受保护的:Animal

class Animal
{
protected:
  int id;
};
于 2013-06-13T05:17:26.370 回答
0

将变量声明为私有将导致只有声明该变量的类才能访问它,如果您希望继承基本类的类也能够访问该变量,请使用受保护的。

于 2013-06-13T09:59:09.957 回答
0

那么你可能想id成为protected而不是private。或者更好的是,使用您编写的访问器...

于 2013-06-13T05:16:19.650 回答
0

id是私有的Animal,因此无法访问Horseid一个令人满意的设计是通过访问getID(),尽管您需要一个 setter 以及现有的 getter 方法。

于 2013-06-13T05:16:20.990 回答