C++ 如何访问继承的成员
我有一个a类和一个B类,如下所示: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
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;
}:
还要记住告诉别人不要问原则。赫尔乔鲍勃是对的。使根类纯粹抽象始终是一种好的做法。它允许您对接口进行编程。