私は C++11 標準を試し始めましたが、同じクラスの別の ctor から ctor を呼び出して init メソッドなどを使用しないようにする方法を説明するこの質問を見つけました。今、私は次のようなコードで同じことを試みています:
馬力:
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;
しかし、イニシャライザリストを使用できるようにしたいと本当に思っています。