【发布时间】:2011-11-10 14:59:26
【问题描述】:
每次我尝试编译我的代码时都会出错:
cannot convert parameter 1 from 'int *' to 'int *&'
测试代码如下所示:
void set (int *&val){
*val = 10;
}
int main(){
int myVal;
int *pMyVal = new int;
set(&myVal); // <- this causes trouble
set(pMyVal); // <- however, this doesn't
}
我想一次性调用该函数,而不需要在某处创建指针来传递它。而且由于指针没有构造函数,所以不能这样做:set(int*(&myVal));
有没有其他方法可以通过引用传递指针而不需要创建临时变量?
编辑:顺便说一句,我知道为什么代码无法编译(我只是传递了可能是 int 而不是实际指针的地址)。问题是还能怎么做。
【问题讨论】:
-
如果你不想创建一个指针,为什么你要求函数获取一个指针(通过引用)?为什么不
set (int &v){v=10;}? -
因为我的类正在存储值,但是该值随后作为指针传递给另一个存储该指针的类。这个指针必须通过引用函数中的指针参数来设置,否则传递的指针并不是真正指向值,而是指向它的副本。在设置此指针之前,我不想创建临时指针只是为了能够传递它。这就是为什么我没有介绍实际问题,而只是介绍了与我的问题相似且更容易的问题。
标签: c++ pointers reference arguments