首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将unsigned int *‘转换为'unsigned int *’&

将unsigned int *‘转换为'unsigned int *’&
EN

Stack Overflow用户
提问于 2012-08-15 20:39:45
回答 4查看 509关注 0票数 2

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

代码语言:javascript
复制
unsigned int *' to 'unsigned int *&

有什么办法可以解决呢?谢谢,

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-15 20:43:51

&data[0]是右值,不能绑定到非常数引用。

你可以让它这样工作:

代码语言:javascript
复制
unsigned int *ptr = &data[0];
func(ptr);

但可能更好的做法是将函数的签名更改为

代码语言:javascript
复制
void foo(unsigned int &val); //or any other return type

如果你想让指针指向其他地方,有一种传递对指针的引用的感觉。但我看不出你有什么理由这么做

票数 6
EN

Stack Overflow用户

发布于 2012-08-15 20:44:32

表达式&data[0]实际上会产生一个r值,这是您的函数不能接受的。

如果你不想改变你的函数,一个简单的变通方法(确保你理解它需要引用的原因):

代码语言:javascript
复制
unsigned int* ptr = &data[0];
func(ptr);
票数 3
EN

Stack Overflow用户

发布于 2012-08-15 20:42:42

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11969415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档