私はthis
を使用していくつかの困難を持って、それは私の派生クラスをスライスするようです。この例は私の問題を説明するのに役立ちます。このスライスを使用して私のオブジェクト
class A
{
A() {
OtherClass(*this);
}
virtual doSomething() = 0;
}
class B : public A
{
B() : A() {}
doSomething() override {
std::cout << "Hi!" << std::endl;
}
}
class OtherClass()
{
OtherClass(A &a) {
a.doSomething();
}
}
は、いくつかの調査の後には、その使用*this
スライスクラスB
のように思えます。そして、OtherClass
はA
で純粋仮想メソッドを呼び出します。私が間違っている? B
クラスの初期化後にOtherClass(*this)
を作成する必要がありますか?
'サブクラスはスーパークラスの前に構築されます'。そうですか?ベース(スーパー)クラスは、派生(サブ)クラスの前に構築されます。 –
訂正しました... –