C ++,有没有办法使用不复制值的引用来构造一个构造函数?

时间:2017-02-19 21:14:08

标签: c++

// 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充满了垃圾。

1 个答案:

答案 0 :(得分:0)

出于多种原因,这是个坏主意。但无论如何,是的,这可以通过使用指针指针来完成:

如果你有某个地方:

A* originalObj = new A()

A** pointer1 = &originalObj
A** pointer2 = &originalObj

然后你做

originalObj = somethingElse

*(* pointer1)和*(* pointer2)都会反映变化。

你必须将此翻译成你的情况,但那是相对简单的。