gpt4 book ai didi

c++ - `(&)()` 在 C++ 编译器错误消息中意味着什么

转载 作者:太空狗 更新时间:2023-10-29 19:48:29 24 4
gpt4 key购买 nike

这个错误是什么意思?

error: no matching function for call to `foo::bar(Qux (&)())`

我知道编译器 (g++) 无法将函数调用与 foo 成员函数匹配。我特别询问最后的额外内容;这一点:(&)()

作为引用,我的函数调用是这样的:

// inside another member function of `foo`
Qux qux();
this->bar(qux);

bar 的签名是:

virtual void bar(Qux&);

编译器还说唯一的候选者是:

virtual void bar(Qux&);

我的函数调用签名与我的定义签名有何不同,(&)() 是什么意思?

最佳答案

嗯,(&)() 本身没有任何意义。 (&)() 只是 Qux (&)() 的一部分,这意味着 reference 一个不接受任何东西并返回 Qux。这是因为:

Qux qux();      //PROBLEM!
this->bar(qux);

这里的第一行没有声明一个对象。它声明了一个函数。

在 C++ 中搜索 vexing parse,在这个站点上,您会看到很多关于它的主题,详细讨论了这个问题。

关于c++ - `(&)()` 在 C++ 编译器错误消息中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com