我有一个获取'unsigned int *&参数的函数我想在我的代码中传输的参数位于std::vector<unsigned int> data
所以,我所做的是:我传输以下参数&data [0]但是得到编译错误:
unsigned int *' to 'unsigned int *&
什么可以解决?谢谢,
我有一个获取'unsigned int *&参数的函数我想在我的代码中传输的参数位于std::vector<unsigned int> data
所以,我所做的是:我传输以下参数&data [0]但是得到编译错误:
unsigned int *' to 'unsigned int *&
什么可以解决?谢谢,
&data[0]
是一个右值,不能绑定到非常量引用。
你可以让它这样工作:
unsigned int *ptr = &data[0];
func(ptr);
但可能最好将函数的签名更改为
void foo(unsigned int &val); //or any other return type
如果您想将指针指向其他地方,则有一种传递对指针的引用的感觉。但在你的情况下,我认为没有理由这样做
该表达式&data[0]
确实产生了一个 r 值,您的函数不能接受该值。
如果您不想更改您的功能,一个简单的解决方法(确保您了解它需要参考的原因):
unsigned int* ptr = &data[0];
func(ptr);
&data[0] 是一个右值,但函数参数类型是对指针的非常量引用。非常量引用不能绑定到右值。
在 OP 为他的问题提供更多上下文之前,很难提出一个好的解决方法。
写
unsigned int *argument = &data[0];
call_function(argument);
请注意,该函数可能希望更改 的值argument
,因此它可能希望您随后编写:
data.assign(argument, argument + new_length);