我有一个纯虚函数的基类,我有一个派生类,其基类虚函数的定义以及它自己的函数。如何让基类对象调用派生类非虚函数?
现在我已经指出了基类对象派生类,如:
Base *bc =new Child();
我想调用子类的方法使用该对象(没有定义或父声明)。
但我得到编译器错误memeberFunction not define in Base class
。
的代码是:
class Base
{
public:
virtual void method1() = 0;
};
class child : public Base
{
public:
virtual void method1() {}
void Method2() { /* some implementation */ }
};
我怎样才能做到这一点?
bc->Method2();
请参阅['dynamic_cast'](http://stackoverflow.com/questions/9973708/dynamic-cast-from-base-to-derived)。 – DCoder
如果'bc'是'Base *',*为什么*你想要做'bc-> Method2();'?这里的根本问题是什么? – Johnsyweb
如果你知道Base *是什么类型,你可以对你想要的类型做一个'static_cast'。通过使用'type_id'运算符或在Base中返回一个类型(通常枚举或一个整数作为ID)的某种虚函数。 –