这个错误是什么意思?
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++令人讨厌的语法分析,您将看到很多关于此问题的详细讨论主题。