我是C ++的新手,正在尝试解释编译器告诉我的内容。我用这种方式调用函数:
Object *clientConnection = new Object();
function(clientConnection);
并收到以下错误:
错误:没有用于调用'function(Object *&)'
的匹配函数
我试图给下面的部分Object*&
赋予意义。如果我将Object
的指针传递给函数,那么带有&
的catch?
答案 0 :(得分:1)
这意味着您传递了Object*
类型的左值。如果您传递了Object*
类型的右值,则会看到另一个错误:
function(&*clientConnection);
应该给出
错误:没有匹配函数来调用'function(Object *)'
此信息是错误消息的一部分,因为某些函数只能通过左值调用,如果传递右值,则&
的缺失会指向您的问题。
答案 1 :(得分:1)
您可以通过两种方式实施function(clientConnection)
按值调用变量clientConnection
的内容
被复制在'p'
void function(Object * p)
按引用调用,其中'p'是clientConnection
的别名
功能体。
void function(Object *& p)
当缺少上述两个定义时,编译器主要打印其中一个定义
function(Object*&)