// C.h
class C {
private:
A _a_in_C;
B *_b_in_C;
public:
...
}
// B.h
private:
A& _a_in_B;
public:
B(A& a): _a_in_B(a) {}
...
对象_b_in_C
是通过其中一种方法在C
生命周期的某个时间点创建的。我希望_a_in_C
与_a_in_B
成为同一个对象,这样每当_a_in_C
发生更改时,_a_in_B
也会同时更改。
问题是,当创建B
的新实例时,_a_in_B
会收到_a_in_C
的临时副本,这违反了使用B
中的引用的目的在构造函数完成工作后,_a_in_B
充满了垃圾。
答案 0 :(得分:0)
出于多种原因,这是个坏主意。但无论如何,是的,这可以通过使用指针指针来完成:
如果你有某个地方:
A* originalObj = new A()
A** pointer1 = &originalObj
A** pointer2 = &originalObj
然后你做
originalObj = somethingElse
*(* pointer1)和*(* pointer2)都会反映变化。
你必须将此翻译成你的情况,但那是相对简单的。