我有 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&'
它仅在我使用重载的 << 时有效(因为它返回 Message&,即:receiveMessage(myMsg<<value);
)
我可能做错了什么/我可能做错了什么,或者只是标准不允许从函数返回值?我认为当你声明一个引用参数时,你可以使用对象本身并且它是自动转换的(唯一的区别是它没有被复制),我看不出它是否来自函数的区别。
(我知道这个问题之前可能已经回答过,但我的搜索只出现了链接器错误“ undefined reference ”)
错误代码是receiveMessage( action->second->message() );
最佳答案
What could I be/am I likely doing wrong?
您没有发布导致错误的代码,这意味着我们只能猜测出了什么问题。
很可能,您正在尝试将临时对象(函数调用或其他表达式的结果)传递给函数。该函数采用非常量 lvalue 引用,不能绑定(bind)到临时值。
解决方案:
- 更改函数以引用 const:
receiveMessage(Message const &)
。如果函数不需要更改它,这只是一个选项。 - 传递命名变量而不是临时对象。
关于c++ - 带有引用参数的函数不能处理从其他函数返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957709/