我有一个获取'unsigned int *& argument‘的函数,我想在代码中传递的参数位于std::vector<unsigned int> data中,所以,我所做的是:我传递了以下参数&data,但得到了编译错误:
unsigned int *' to 'unsigned int *&有什么办法可以解决呢?谢谢,
发布于 2012-08-15 20:43:51
&data[0]是右值,不能绑定到非常数引用。
你可以让它这样工作:
unsigned int *ptr = &data[0];
func(ptr);但可能更好的做法是将函数的签名更改为
void foo(unsigned int &val); //or any other return type如果你想让指针指向其他地方,有一种传递对指针的引用的感觉。但我看不出你有什么理由这么做
发布于 2012-08-15 20:44:32
表达式&data[0]实际上会产生一个r值,这是您的函数不能接受的。
如果你不想改变你的函数,一个简单的变通方法(确保你理解它需要引用的原因):
unsigned int* ptr = &data[0];
func(ptr);发布于 2012-08-15 20:42:42
&data是右值,但函数参数类型是对指针的非常数引用。非常数引用不能绑定到右值。
在OP为他的问题提供更多上下文之前,很难建议一个好的解决方法。
https://stackoverflow.com/questions/11969415
复制相似问题