error: invalid initialization of non-const reference of type 'std::__cxx11::string& {aka std::__cxx11::basic_string<char>&}' from an rvalue of type 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' m_pMessageControl->sendIM(imInfo, std::string()); ^~~~~~~~
时间: 2023-09-14 10:15:48 浏览: 214
c++ std::invalid_argument应用
5星 · 资源好评率100%
这个错误是因为你传递了一个临时字符串对象(rvalue)给函数中的非常量引用参数。非常量引用参数只能绑定到具有持久性的对象,而临时对象是不具有持久性的,因此编译器会报错。
为了解决这个问题,你可以将非常量引用参数改为常量引用参数,或者传递一个具有持久性的字符串对象。如果你想使用临时对象,可以将它作为函数的参数,而不是作为参数的引用。
例如,将函数声明改为以下形式之一:
```
void sendIM(IMInfo& imInfo, const std::string& message);
void sendIM(IMInfo& imInfo, std::string message);
```
或者将函数调用改为以下形式之一:
```
m_pMessageControl->sendIM(imInfo, std::string(""));
m_pMessageControl->sendIM(imInfo, "Hello, world!");
```
阅读全文