Rav*_*ven 5 c++ pointers arguments reference
每次我尝试编译我的代码时都会收到错误:
无法将参数1从'int*'转换为'int*&'
它正在测试代码如下:
cannot convert parameter 1 from 'int *' to 'int *&'
Run Code Online (Sandbox Code Playgroud)
我想单手调用该函数而不在某处创建指针只是为了传递它.并且由于指针没有构造函数,因此无法完成此类操作.set(int*(&myVal));.有没有其他方法可以通过引用传递指针而无需创建临时变量?
编辑:顺便说一下,我知道为什么代码无法编译(我只是传递地址,可能是int而不是实际的指针).问题是如何做到这一点.
Arm*_*yan 14
对非const的引用不能绑定到右值.&运算符的结果是rvalue.看一下左值和右值之间的区别,或者阅读一本好的C++书.
此外,在您的上下文中,您不需要通过引用传递.以下也可以:
void set (int *val){
*val = 10;
}
Run Code Online (Sandbox Code Playgroud)
如果你做这样的事情,就需要参考;
void set (int*& val){
val = new int; //notice, you change the value of val, not *val
*val = 10;
}
Run Code Online (Sandbox Code Playgroud)