C++ 如何访问继承的成员

C++ 如何访问继承的成员,c++,C++,我有一个a类和一个B类,如下所示: class A { public: A(){} }; class B : public A { public: B() : A() { value = 10; } int Value() { return value; } protected: int value; }: 我有以下代码: int main() { A* a = new B(); // how can I

我有一个a类和一个B类,如下所示:

class A
{
public:
   A(){}
};

class B : public A
{
public:
   B() : A()
   {
      value = 10;
   }
   int Value()
   {
      return value;
   }

protected:
   int value;
}:
我有以下代码:

int main()
{
   A* a = new B();
   // how can I access to Value() ? I would like to make that :
   int val = a->Value();
   // must i cast a to B ? how ?
}
谢谢您的帮助。

请改为:

B* b = new B();

如果您需要B的功能,请创建一个B。

问题是,虚拟不是继承的。它没有在A中定义

将中的值声明为纯虚拟值

virtual int Value() = 0;

您无法访问值,因为就编译器而言,中没有您正在创建的对象类型的值函数。

使值成为中的纯虚拟函数,并添加虚拟析构函数:

class A
{
public:
  A(){}
  virtual ~A(){}
  virtual int Value() = 0;
};
使用虚拟方法

class A
{
public:
   A(){}
   virtual int Value() = 0;
   virtual ~A(){}
};

class B : public A
{
public:
   B() : A()
   {
      value = 10;
   }
   int Value()
   {
      return value;
   }

protected:
   int value;
}:

还要记住告诉别人不要问原则。

赫尔乔鲍勃是对的。使根类纯粹抽象始终是一种好的做法。它允许您对接口进行编程。