2

让我们假设这段代码:

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);

由于某种原因,这也是不正确的,我也不明白。

所以我的问题是:为什么这些电话不正确?

4

1 回答 1

4

第一个示例不正确,因为&v它是一个指向浮点数的指针。该函数期望对双精度的引用。指向浮点数的指针不是对双精度数的引用。它们是不兼容的类型。

第二个示例不正确,因为v+5它是临时的。您不能传递对非常量临时的引用。

于 2013-09-28T16:44:50.140 回答