变量无法访问?

时间:2013-06-13 05:14:32

标签: c++ class inheritance modifiers

在下面的代码中,变量'id'在类Horse中无法访问,这是继承问题吗?访问修饰符问题?非常感谢任何帮助。

class Animal
{
private:
   int id;
};

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

4 个答案:

答案 0 :(得分:3)

在这种情况下,

Horse只会继承public和protected元素:

class Horse : public Animal

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

class Animal
{
protected:
  int id;
};

答案 1 :(得分:0)

您可能希望idprotected而不是private。或者更好,使用您编写的访问器......

答案 2 :(得分:0)

idAnimal是私有的,因此Horse无法访问。一个令人满意的设计是访问idgetID(),但您需要一个setter以及现有的getter方法。

答案 3 :(得分:0)

将变量声明为private将给出一个结果,即只有声明变量的类才能访问它,如果你希望继承基类的类能够访问变量,则使用protected。