在Child中没有副本的父指针的副本

时间:2013-03-08 09:04:16

标签: c++ pointers inheritance copy

嗨,这是我的第一个主题。我在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。我不能改变孩子,这是我问题的强烈限制。

有什么想法吗?有可能吗?

1 个答案:

答案 0 :(得分:0)

正如c2=c1 c2.a._p显然c1.a._pParent c1; Child c2, ....; c2.a._p = &c1; 具有相同的地址。基本上你告诉c2应该是c1!

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

{{1}}