&的含义作为编译错误中的函数参数

时间:2013-10-22 06:45:46

标签: c++ reference

我是C ++的新手,正在尝试解释编译器告诉我的内容。我用这种方式调用函数:

Object *clientConnection = new Object();
function(clientConnection);

并收到以下错误:

  

错误:没有用于调用'function(Object *&)'

的匹配函数

我试图给下面的部分Object*&赋予意义。如果我将Object的指针传递给函数,那么带有&的catch?

2 个答案:

答案 0 :(得分:1)

这意味着您传递了Object*类型的左值。如果您传递了Object*类型的右值,则会看到另一个错误:

function(&*clientConnection);

应该给出

  

错误:没有匹配函数来调用'function(Object *)'

此信息是错误消息的一部分,因为某些函数只能通过左值调用,如果传递右值,则&的缺失会指向您的问题。

答案 1 :(得分:1)

您可以通过两种方式实施function(clientConnection)

  1. 按值调用变量clientConnection的内容 被复制在'p'

    void function(Object * p)

  2. 按引用调用,其中'p'是clientConnection的别名 功能体。

    void function(Object *& p)

  3. 当缺少上述两个定义时,编译器主要打印其中一个定义 function(Object*&)