C++のサブクラスには疑問があります。私はこのコードを持っている:派生クラスのオブジェクトに、基底クラスのものではなく、独自の関数を使用させます。
class BaseClass() {
BaseClass();
void doSomething();
}
class SubClass : public BaseClass {
SubClass();
void doSomething();
}
私はそれがその後、私はdoSomethingのを(使用するFOOが必要...
BaseClass foo = SubClass();
をサブコンストラクタを呼び出すんサブクラスである可能性がBaseClassのオブジェクトを宣言する場合)方法は派生クラスのですが、私はこのようにします...
foo.doSomething();
派生クラスの代わりに親クラスメソッドを使用します。私はこれを試してみましたが、それは動作しません:
foo.SubClass::doSomething();
はそれを行う方法はありますか私は、それが独自の機能を利用するために「サブクラス」タイプのオブジェクトを宣言するように強制していますか?
'virtual void doSomething();' ?? –
'BaseClass foo = SubClass();' - 'foo'は' BaseClass'ではなく 'BaseClass'のオブジェクトです。これは**オブジェクトのスライス**の例です。 'doSomething()'バーチャルをマークしてもこれは変わりません。 –
はい、Pete Beckerさんが問題をスライスしているようだから、関数を仮想化すると問題は解決しません...これを解決する唯一の方法は、fooをSubClass型として明示的に宣言することです。 – JotaEle