我真的不明白为什么会这样。
我有一些这样声明的函数:
std::string unmaskString(std::string &oValue);
在代码中我这样做:
v = unmaskString(line.substr(eq+1));
我得到一个编译错误说:
error: invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
当我把它放在两个单独的语句中时,它会起作用:
v = line.substr(eq+1);
v = unmaskString(v);
第一行返回一个字符串对象,甚至没有引用,所以我不太明白这个错误。
将功能更改为
std::string unmaskString(std::string oValue);
也给出了那个错误。
更新:
将 maskString 更改为 unmaskString,因为这是一个错误,但问题仍然存在,因为 masString 具有相同的签名。