我有以下情况
class B {
public:
B() {};
virtual ~B() {};
virtual void seti( int x ) { i = x; };
virtual void setj( int x ) { j = x; };
virtual void add() =0;
protected:
int i;
int j;
};
class D : public B {
public:
virtual void add() { cout << "D-add:" << i + j << endl; };
};
class E: public B {
public:
void seti( int x ) { i = x; };
void add() { cout << "E-add:" << i + j << endl; };
void mult() { cout << "E-mult:" << i * j << endl; };
};
int _tmain(int argc, _TCHAR* argv[])
{
D *d = new D();
d->seti(4); d->setj(5); d->add();
E*e = d;
e->seti(8); e->add(); e->mult();
return 0;
}
我收到以下错误 1>.\CallBack.cpp(38):错误 C2440:“正在初始化”:无法从“D *”转换为“E *” 1> 指向的类型不相关;转换需要 reinterpret_cast、C-style cast 或 function-styl`在此处输入代码`e cast
我想做的是当我实例化 E 时,我使用了 D 的所有信息/成员并用它做更多的事情。我应该像上面那样使用分层继承还是应该使用多级继承,或者还有其他更好的方法。请指教。谢谢 !