C++ C+中的STL+;:与';操作员*';

C++ C+中的STL+;:与';操作员*';,c++,stl,reference,C++,Stl,Reference,在该功能中: int marshall_subscription (string sub, uint32_t sub_id, vector<u_int8_t> const & ser) { //Do something here to build serial_data *ser = serial_data; } 这不是通过引用传递STL的方式吗?ser不是指针,而是通过引用传递的值。因此,您不需要取消对它的引用。尝试: ser = serial_da

在该功能中:

int marshall_subscription (string sub, uint32_t sub_id, vector<u_int8_t> const & ser)
{
     //Do something here to build serial_data
      *ser = serial_data;
}

这不是通过引用传递STL的方式吗?

ser
不是指针,而是通过引用传递的值。因此,您不需要取消对它的引用。尝试:

ser = serial_data;

ser
不是指针,它是引用,因此无需取消引用:

 ser = serial_data;
此外,
ser
被声明为
const
引用,因此分配给它将导致错误。若要修复,请将其更改为非
常量
参考:

int-marshall_订阅(…,std::vector&ser);

您只需要取消引用指针,而不需要取消引用。请注意,对于指针,
*p
p[0]
是相同的。但是对于
std::vector
v[0]
起作用,而
*v
不起作用(与
*v
最接近的工作等价物是
*(v.begin())
)@Aurelius:除非您引用了指针。或数组。一个向量很像一个数组。什么数据类型是代码> SerialLoad数据< /代码>?我不知道你的向量有多大,或者你用它来做什么,但是如果所有的值都设置在这个函数中,考虑把它作为返回值。它也不编译。哦,在《永恒的月亮》中,你为什么这么烦我?
 *ser = serial_data;
 ser = serial_data;
int marshall_subscription(..., std::vector<u_int8_t>& ser);