我已經開始嘗試使用C++ 11標準,並且發現this問題,它描述瞭如何從同一個類中的另一個ctor調用您的ctor以避免使用init方法等。現在,我想用代碼同樣的事情,看起來像這樣:使用委託構造函數的成員初始化
HPP:
class Tokenizer
{
public:
Tokenizer();
Tokenizer(std::stringstream *lines);
virtual ~Tokenizer() {};
private:
std::stringstream *lines;
};
CPP:
Tokenizer::Tokenizer()
: expected('=')
{
}
Tokenizer::Tokenizer(std::stringstream *lines)
: Tokenizer(),
lines(lines)
{
}
但是,這是給我的錯誤: In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
我已經嘗試移動Tokenizer()第一個和最後一個列表中的部分,但沒有幫助。
背後的原因是什麼,我該如何解決?我已經嘗試將lines(lines)
移動到身體this->lines = lines;
而不是它的工作正常。但我真的很想能夠使用初始化列表。
在此先感謝!
起初它似乎是反直覺,但實際上真的有幫助! – Korchkidu