所以,如果我有這樣的功能:通過引用傳遞串並通過在C函數參數++更新其值
void edit(string& s) {
//do something with s
}
,我使用它像:
std::string str = "Hello";
edit(str);
這將更新的值str
。
但現在我有一個類,其中頭文件具有類似construtor:
class MyClass {
private:
//something
protected:
std::string& str;
public:
//something
MyClass(std::string& s): str(s){}
};
,後來在源文件中,我計算,我想通過傳遞字符串參數更新字符串到構造函數,但它不起作用。
你可以請給我一些想法,我怎麼能做這樣的工作,以便我分配一個std::string
價值的類變量反映在傳遞給此類的構造函數的參數字符串中。
謝謝
UPDATE:
隨着上述變化的建議(使STR參考),我得到這個錯誤:
「錯誤:STR必須在cosntructor初始化鹼/構件初始化列表」
更新 - SOLUTION:
嗨,所以下面這個方法,我似乎已經找到了解決辦法:
class MyClass {
private:
//something
protected:
std::string* str;
public:
//something
MyClass(std::string* s): str(s){}
};
後來,我有:
string mystring;
MyClass(&mystring);
和voilla它似乎工作堅持好。
缺少&在你的成員變量str ...應該引用不可變... – PiotrNycz
你傳遞給構造函數的字符串是不相關的。您的對象具有該字符串的*副本*。如果您無法訪問副本,則無法訪問。 –