我有Messageable::receiveMessage(Message&)
。当我使用它时,我希望能够将它传递给Message
,我将它传递给函数返回的Message
,但当我这样做时,我得到
error: no matching function for call to 'Messageable::receiveMessage(Message)'
no known conversion for argument 1 from 'Message' to 'Message&'
只有当我使用重载的&lt;&lt; (因为它返回一个Message&amp;,即:receiveMessage(myMsg<<value);
)
我可能/我可能做错了,或者只是不在标准中允许从函数返回的值?我认为当你声明一个引用参数时,你可以使用该对象本身并且它会被自动转换(只是区别,它没有被复制),并且我看不出它是否来自一个函数。< / p>
(我知道这个问题之前可能已经回答了,但是我的搜索只出现了链接器错误“未定义的引用”)
错误的代码是receiveMessage( action->second->message() );
答案 0 :(得分:2)
我可能/我可能做错了什么?
您没有发布导致错误的代码,这意味着我们只能猜出错误。
最有可能的是,您正在尝试将一个临时对象(函数调用或其他表达式的结果)传递给该函数。该函数采用非const lvalue 引用,不能绑定到临时引用。
解决方案:
receiveMessage(Message const &)
。如果函数不需要更改它,这只是一个选项。