C++ C++;,有没有一种方法可以使用不复制值的引用创建构造函数?
对象C++ C++;,有没有一种方法可以使用不复制值的引用创建构造函数?,c++,C++,对象\u b\u in_C是通过以下方法之一在C的生命周期的某个点创建的。我希望\u a\u in_C成为与\u a\u in_B相同的对象,这样每当\u a\u in_C更改时,\u a\u in_B也会同时更改 问题是,当创建B的新实例时,\u a\u in\u B会收到\u a\u in\u C的临时副本,这违背了在B中使用引用的目的,并且在构造函数完成工作后,将\u a\u in\u B中充满垃圾。这是一个坏主意,有多种原因。但无论如何,这可以通过使用指向指针的指针来实现: 如果你有什么
\u b\u in_C
是通过以下方法之一在C
的生命周期的某个点创建的。我希望\u a\u in_C
成为与\u a\u in_B
相同的对象,这样每当\u a\u in_C
更改时,\u a\u in_B
也会同时更改
问题是,当创建
B
的新实例时,\u a\u in\u B
会收到\u a\u in\u C
的临时副本,这违背了在B
中使用引用的目的,并且在构造函数完成工作后,将\u a\u in\u B
中充满垃圾。这是一个坏主意,有多种原因。但无论如何,这可以通过使用指向指针的指针来实现:
如果你有什么地方:
// 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) {}
...
然后你就这样做了
A* originalObj = new A()
A** pointer1 = &originalObj
A** pointer2 = &originalObj
*(*pointer1)和*(*pointer2)都将反映更改
您必须将此转换为您的情况,但这相对简单。向我们展示构造函数的调用,发布的代码应该满足您的要求。请创建一个。注意,您应该将
\u b\u in_C
设置为空指针:b*\u in_C=nullptr代码>,这样您就知道它是否已定义。
originalObj = somethingElse