`(&)()`在C编译器错误消息中的含义是什么
发布时间:2020-12-16 10:09:37 所属栏目:百科 来源:网络整理
导读:这个错误是什么意思? error: no matching function for call to `foo::bar(Qux ()())` 我知道编译器(g)无法将函数调用与foo成员函数匹配.我特意询问最后的额外内容;这一点:()(). 作为参考,我的函数调用是这样的: // inside another member function of `f
这个错误是什么意思?
error: no matching function for call to `foo::bar(Qux (&)())` 我知道编译器(g)无法将函数调用与foo成员函数匹配.我特意询问最后的额外内容;这一点:(&)(). 作为参考,我的函数调用是这样的: // inside another member function of `foo` Qux qux(); this->bar(qux); 酒吧的签名是: virtual void bar(Qux&); 编译器还说唯一的候选者是: virtual void bar(Qux&); 我的函数调用签名与我的定义签名有何不同,(&)()是什么意思? 解决方法
好吧,(&)()本身并不意味着什么. (&)()只是Qux(&)()的一部分,这意味着引用一个不带任何东西并返回Qux的函数.这是因为:
Qux qux(); //PROBLEM! this->bar(qux); 这里的第一行不声明对象.它声明了一个函数. 在C中搜索vexing parse,在这个网站上,你会看到很多关于它的主题,详细讨论这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |