Jos*_*hua 4 c++ copy reference
我有class A
一个public std::list<int> object list_
.
Class B
,带有指向类的指针A a
.
在课堂上的方法B
......
std::list my_list = a->list_;
my_list.push_back(1);
my_list.push_back(2);
my_list.push_back(3);
Run Code Online (Sandbox Code Playgroud)
我知道my_list实际上是list_的副本,这就是为什么更改不会反映到原始列表中的原因.对于这个特定领域,我试图避免通过引用传递.无需执行以下操作......
a->list_.push_back(1);
a->list_.push_back(2);
a->list_.push_back(3);
Run Code Online (Sandbox Code Playgroud)
我是否有可能直接引用A中的list_对象,而不必a
每次都经过对象?
谢谢
这应该工作:
std::list<int>& list = a->list_;
list.push_back(1);
list.push_back(2);
list.push_back(3);
Run Code Online (Sandbox Code Playgroud)
基本上我创建了一个引用实例list_
成员的本地引用变量A
.
您可以使用其他答案解释的参考.
在C++ 11中,您甚至可以这样做:
auto add = [&](int n) { a->list_.push_back(n); };
add(1);
add(2);
add(3);
Run Code Online (Sandbox Code Playgroud)
不a->
,甚至list_
不是,甚至不是push_back()
.只需三次击键:add
.