直接在函数调用的参数列表中初始化一个向量

Initialize a vector directly in parameter list of function call

我认为这是一个简单的任务,但我还没有找到解决方案:

这个有效:

vector<A*> v = vector<A*>{a1, a2};
b->add(v);

这个编译不通过(方法无法解决):

b->add(vector<A*>{a1, a2});

添加签名:

void add(vector<A*>& v);

我做错了什么?

add 取一个 vector<A*>&。临时对象不能绑定到非常量左值引用。如果 add 不修改其参数,您可以将签名更改为 void add(const vector<A*>&),允许您传递临时变量。