0

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

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

并收到以下错误:

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

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

4

2 回答 2

1

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

function(&*clientConnection);

应该给

错误:没有匹配的函数调用“函数(对象*)”

此信息是错误消息的一部分,因为某些函数只能使用左值调用,并且如果您传递右值,则缺少此信息会导致&您遇到问题。

于 2013-10-22T06:50:36.783 回答
1

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

  1. 按值调用,其中变量的内容clientConnection将被复制到“p”中

    无效函数(对象* p)

  2. 通过引用调用,其中“p”是clientConnection函数体中的别名。

    无效函数(对象* &p)

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

于 2013-10-22T07:34:43.660 回答