-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(我做了一个副本)。我想修改 A 和/或 Parent 以便_p用正确的父级更新指针。我不能改变孩子,这是我的问题的强烈限制。

任何想法?可能吗?

4

1 回答 1

0

当你这样做c2=c1时,很明显它c2.a._p具有与 相同的地址c1.a._p。基本上你告诉c2应该是c1!

更新:发表您的评论,那么您应该这样做。这有点难看,但我仍然没有全面了解您要实现的目标以及为什么不能修改 Class Child。这是某种伪 C++ 代码。

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