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

The meaning of & as function parameter in a compile error

本文关键字:参数 函数 as 错误 编译      更新时间:2023-10-16

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

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

并收到以下错误:

错误:调用"函数(对象*&)"时没有匹配的函数

我试图为以下部分赋予含义 Object*&.如果我将Object的指针传递给函数,那么&的捕获是怎么回事?

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

function(&*clientConnection);

应该给

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

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

您可以通过

两种方式实现function(clientConnection)

  1. 按值调用,其中变量clientConnection的内容将在"p"中复制

    无效函数(对象* p)

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

    void 函数(对象* &p)

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