我有一个基类
class base {
public:
base();
int someData;
virtual void foo(){
std::cout << someData;
}
};
和一些派生类,比如
class derived : public base {
public:
derived();
void foo(){
std::cout << someData * 5;
}
};
基本上它们拥有相同类型的数据,但对这些数据的操作不同。 我有另一个类不需要知道我的对象的详细信息,它需要做的就是设置数据并调用派生的 foo()。
class useData {
public:
useData();
base x;
int do() { x.someData = 5; return x.foo(); }
};
我希望“useData”尽可能通用,因此我在其定义中使用基类而不是派生类。 当然,在这种情况下,它将调用基方法而不是派生方法。如何重写我的代码或使其自动(无需类型检查或类似操作)调用派生方法?
谢谢
最佳答案
要使用多态性,您需要一些指针或引用。所以在 useData
中,变量 x
应该声明为 base *
。之后,您可以使用带有任何派生类的 new
创建。多态性将按预期执行..
关于c++ - 从通用基类引用调用派生类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301511/