我不明白爲什麼會發生這種情況。在複合語句中不能分配字符串
我有一個聲明是這樣一些功能:
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);
也給出了錯誤。
UPDATE:
更改maskString到unmaskString,因爲這是一個錯誤,但問題仍然aplies作爲masString具有相同的簽名。
誰在乎'maskString'如果你的問題是'unmaskString'? – 2013-04-21 12:04:25
問題是一樣的。這不是關於臨時對象的函數名稱。這是一個錯字,並且不相關,因爲錯誤信息不是「未定義的函數」。 – Devolus 2013-04-21 12:29:19
但是你已經智取你自己。通過將參數更改爲非參考,您提出的修復方法確實有效,但由於您對修改哪項功能並不在意,因此您沒有注意到這一點。無論如何,請儘量縮短問題的相關時間。我們不需要知道代碼中沒有連接到問題的所有其他部分。 – 2013-04-21 12:35:28