我们假设这段代码:
void function(double &f){
// doing w/e here
}
然后在主要功能中:
float v;
function(&v);
我的编译器说这不正确,买我不明白为什么。
关于同一主题:
void function(float *&f){
// doing w/e here
}
然后在主要功能中:
float *v;
function(v+5);
由于某种原因,这也是不正确的,我也没有。
所以我的问题是:为什么这些电话不正确?
答案 0 :(得分:4)
第一个示例不正确,因为&v
是指向float的指针。该函数期望引用double。指向float的指针不是对double的引用。它们是不兼容的类型。
第二个示例不正确,因为v+5
是临时的。您不能将引用传递给非const临时文件。