嗨,这是我的第一个主题。我在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
。我不能改变孩子,这是我问题的强烈限制。
有什么想法吗?有可能吗?
答案 0 :(得分:0)
正如c2=c1
c2.a._p
显然c1.a._p
与Parent c1;
Child c2, ....;
c2.a._p = &c1;
具有相同的地址。基本上你告诉c2应该是c1!
更新:发表评论,那么你应该这样做。这有点难看,但我仍然没有完全了解你想要实现的目标,以及为什么Class Child无法修改。这是某种伪C ++代码。
{{1}}