-1

こんにちはこれは私の最初のトピックです。私はC++で次の状況にあります:

class A;
class Child;
class Parent;

class A 
{
public:
    Parent *_p;
    A() {}
};

class Parent 
{
public:
    void add(A &a) { a._p = this; }
    Parent() {}
};

class Child : public Parent
{
public:
    A a;
    Child() : Parent() { add(a); }
};

メインは非常に単純です:

int main(int argc, char *argv[ ])
{
     Child c1,c2;
     c2=c1;
     return 0;
}

現在c2.a._p、と同じアドレスを持っていますc1.a._p(私はコピーをしました)。_pポインタを正しい親で更新するために、Aまたは親、あるいはその両方を変更したいと思います。私は子供を変えることができません、これは私の問題の強い制限です。

何か案が?出来ますか?

4

1 に答える 1

0

あなたがするように、それがと同じアドレスを持っているc2=c1ことは明らかです。基本的に、c2はc1である必要があると言います。c2.a._pc1.a._p

更新:コメントを付けたら、それを行う必要があります。少し醜いですが、あなたが達成しようとしていることと、クラスチャイルドを変更できない理由の全体像はまだわかりません。これはある種の疑似C++コードです。

Parent c1;
Child c2, ....;
c2.a._p = &c1;
于 2013-03-08T10:41:13.807 に答える