这个错误是什么意思?

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 (&)()的一部分,这意味着引用不带任何内容并返回Qux的函数。这是由于以下原因引起的:

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

第一行不声明任何对象。而是声明一个函数。

在此站点上搜索C++令人讨厌的语法分析,您将看到很多关于此问题的详细讨论主题。

10-05 23:49