#include <iostream>
class BarParent
{
public:
int x;
virtual void fuz() = 0;
};
class BarChild : public BarParent
{
public:
BarChild(int new_x){x = new_x;}
virtual void fuz(){}
};
class FooParent
{
public:
BarParent* p_barPar;
FooParent (BarChild* new_p_bar)
{
p_barPar = new_p_bar;
std::cout << p_barPar->x << std::endl;
}
};
class FooChild: public FooParent
{
public:
BarChild barChild;
FooChild(int new_x):FooParent(&barChild), barChild(new_x){}
};
int main()
{
FooChild foo(60);
BarChild bar(99);
FooParent fooP(&bar);
}
-548726160
99
我明白爲什麼我得到這個結果(未定義的行爲),barChild
它initiailized之前被使用。我的問題是做這件事的'正確'是什麼。
@zneak一個簡單MWE將使用戶建議只是「重新排序的成員。」 – aiao
據我所知,你只需要一個需要用成員字段進行初始化的基類。 – zneak