次のような状況があります
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 スタイルのキャスト、または function-styl`enter code here`e キャストが必要です
私がやりたいことは、E をインスタンス化するときに、D のすべての情報/メンバーを使用して、さらに何かを行うことです。上記のような階層継承を使用する必要がありますか、または複数レベルの継承を使用する必要がありますか、それとも他に良い方法がありますか。お知らせ下さい。ありがとうございました !