2012-12-19 103 views
0

我有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&' 

它只能当我用我的重载< <(因为它返回一个消息&,即:receiveMessage(myMsg<<value);

我可能是什么/我我可能做错了,或者是它只是没有在标准中允许从函数返回的值?我认为,当你声明一个引用参数时,你可以使用这个对象本身并自动进行转换(只有区别,它不会被复制),而且我看不出它是否来自函数。

(我知道这个问题很可能回答过了,但我只搜索想出了一个链接错误“未定义参考”)

有过错的代码为receiveMessage(action->second->message());

回答

2

我该怎么办是/我可能做错了吗?

你不张贴导致错误,这意味着我们只能猜测什么是错的代码。

很可能,您正试图将函数调用或其他表达式的临时对象传递给该函数。该函数采用非const 左值引用,该引用不能绑定到临时表。

解决方案:

  • 改变功能采取的引用为const:receiveMessage(Message const &)。如果函数不需要改变它,这只是一个选项。
  • 传递一个命名变量而不是临时对象。
+0

是的......正是这样:一个临时对象。 – efaj