父级指针的副本,而不在子项中复制副本

Copy of Parent's pointer without copy in Child

本文关键字:副本 复制 指针      更新时间:2023-10-16

大家好,这是我的第一个主题。我在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); }
};

main很简单:

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

目前c2.a._pc1.a._p有相同的地址(我做了一个拷贝)。我想修改A和/或Parent,以便用正确的父指针更新_p。我不能改变孩子,这是我问题的强烈局限性。

任何想法?这可能吗?

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

Update:给出你的评论,那么你应该这样做。这是一个有点丑,但我仍然没有什么你试图实现和为什么类子不能修改的全貌。这是一段伪c++代码

Parent c1;
Child c2, ....;
c2.a._p = &c1;