在c ++中引用而不通过引用传递

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每次都经过对象?

谢谢

Con*_*ius 7

这应该工作:

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.


Naw*_*waz 7

您可以使用其他答案解释的参考.

在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.