将无符号 int *' 转换为 'unsigned int *&



>我有一个函数,它得到'unsigned int *& argument。我要在代码中传输的参数位于std::vector<unsigned int> 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);

写入

unsigned int *argument = &data[0];
call_function(argument);

请注意,该函数可能期望更改 argument 的值,因此它可能需要您随后编写:

data.assign(argument, argument + new_length);

&data[0] 是一个右值,但函数参数类型是对指针的非常量引用。非常量引用不能绑定到右值。

在 OP 为他的问题提供更多上下文之前,很难提出一个好的解决方法。

最新更新