繁体   English   中英

将unsigned int *'转换为'unsigned int *&

[英]convert unsigned int *' to 'unsigned int *&

我有一个函数,它得到'unsigned int *&argument我想在我的代码中传递的参数位于std::vector<unsigned int> data所以,我做的是:我传输以下参数&data [0]但是得到编译错误:

unsigned int *' to 'unsigned int *&

什么可以解决? 谢谢,

&data[0]是一个rvalue,不能绑定到非const引用。

你可以这样工作:

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]是一个rvalue,但函数参数类型是指针的非常量引用。 非const引用不能绑定到右值。

在OP为他的问题提供更多背景之前,很难建议一个好的解决方法。

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

请注意,该函数可能希望更改argument的值,因此可能希望您编写:

data.assign(argument, argument + new_length);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM