我是 C++ 新手,正在尝试解释编译器告诉我的内容。我这样调用函数:
Object *clientConnection = new Object();
function(clientConnection);
并收到以下错误:
错误:没有匹配的函数调用'function(Object*&)'
我试图为以下部分赋予意义Object*&
。如果我将 的指针传递Object
给函数,那么 catch 有什么用&
?
这意味着您传递了一个类型的左值Object*
。如果你传递了一个类型的右值Object*
,你会看到一个不同的错误:
function(&*clientConnection);
应该给
错误:没有匹配的函数调用“函数(对象*)”
此信息是错误消息的一部分,因为某些函数只能使用左值调用,并且如果您传递右值,则缺少此信息会导致&
您遇到问题。
您可以function(clientConnection)
通过两种方式实现
按值调用,其中变量的内容clientConnection
将被复制到“p”中
无效函数(对象* p)
通过引用调用,其中“p”是clientConnection
函数体中的别名。
无效函数(对象* &p)
当上述两个定义都缺失时,编译器主要打印其中一个
function(Object*&)