【发布时间】:2013-02-25 21:32:36
【问题描述】:
我有一个基类和一个扩展它的子类。子类有自己的方法,而父类没有。也就是说,在基类中将其声明为虚拟并不是一个真正的选择。
class A {
public:
virtual void helloWorld();
};
class B : public A {
public:
virtual void helloWorld();
void myNewMethod();
};
然后,在我的实现中,我有一个指向 A 的指针,并将其构造为 B:
// somewhere in a .cpp file
A* x;
x = new B();
x->myNewMethod(); // doesn't work
我目前的解决方案是投射它:
((B *)x)->myNewMethod();
我的问题是,是否有更清洁的方式来做到这一点,或者正在寻找可行的方法?
【问题讨论】:
标签: c++ inheritance polymorphism