我有一个类test_d
,它公开继承了类test_b
。类test_d
有一个函数getValues()
,我需要使用类test_b
的对象调用它。我尝试使用dynamic_cast
和reinterpret_cast
,但它没有用。还有其他办法吗?
class test_b {
// this is the base class
};
class test_d : public test_b {
// this is the derived class
public int getValues() const; // this is the function I need to use.
};
test_b* objB = new test_d;
dynamic_cast<test_d*>(objB)->getValues(); // this is what I am doing.
答案 0 :(得分:2)
在你的界面中,你应该将你的方法声明为纯虚函数,然后在派生类中你应该编写一个实现
class test_b
{
public:
virtual int getValues() const = 0;
};
class test_d : public test_b
{
public:
virtual int getValues() const
{
return m_value;
}
};
来自main()
的某个地方:
test_b* objB = new test_d;
objB->getValues();
这是OOP的基础:接口和接口的实现