push_back
對於帶有函數更新值的向量,不允許爲什麼?爲什麼我不能直接從vector中的函數push_back更新值?
std::vector<std::string>goin;
goin.push_back(function(somestringvalue)); // why cant it take update value?
void function(std::string& var)
{
var += "pre";
}
push_back
對於帶有函數更新值的向量,不允許爲什麼?爲什麼我不能直接從vector中的函數push_back更新值?
std::vector<std::string>goin;
goin.push_back(function(somestringvalue)); // why cant it take update value?
void function(std::string& var)
{
var += "pre";
}
正如其他人所說的,問題是function
不會返回任何東西。解決這個問題的辦法是將它返回它的參數:
const std::string& function(std::string& var) {
var += "pre";
return var;
}
這樣,它修改則傳遞給它的字符串,並將其返回到該字符串的引用,這樣就可以將其推入載體。
這就是我在尋找的謝謝@pete Becker – rosti
是否有理由返回一個'const std :: string&'而不是'std :: string&'?如果你使用後者,你可以鏈接電話。 – NathanOliver
爲什麼不直接按值返回一個'std :: string'?一般來說,價值語義在輸入和輸出上都很好(更容易推理生命週期),編譯器極有可能對其進行優化(RVO),此外,一旦你點擊了'push_back' ..不要討厭;對於你在這裏使用'const&'返回值的原因真的很有趣(我可能會學到一些東西)。 –
'function' returns'void' ... – Jarod42
因爲你的函數沒有返回任何東西... – NathanOliver
你在說什麼「返回值」?你的函數沒有任何「返回值」。 – AnT