実際には同じものへの参照である場合とそうでない場合がある2つの参照を取る親クラスがあります。この場合、それらが同じ場合、Child クラスの初期化子リストでシーケンス ポイントの警告が表示されます。
class A
{
public:
A(int) {}
private:
A() {}
};
class Parent
{
public:
Parent(A&, A&) {}
};
class Child : public Parent
{
public:
Child() :
Parent(
*(_A = new A(0)),
*(_A)) //Warning on this line
{
}
private:
A *_A;
};
int main(int argc, char** argv)
{
return 0;
}
メモリが割り当てられた後にその行の逆参照が発生することが保証されていないためだと思います。いずれにせよ、私の質問は、親または A のいずれかに変更を加えずに、とにかくこれに関連するものはありますか?