私はC++ 11標準を試し始めましたが、同じクラスの別のctorからctorを呼び出す方法を説明するthisという質問があります。デリゲートされたコンストラクタを使用している間のメンバの初期化
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()の部分をリストの最初と最後に移動しようとしましたが、それは助けになりませんでした。
これの背後にある理由は何ですか。どのように修正する必要がありますか?私は代わりにthis->lines = lines;
とlines(lines)
体に移動しようとしたとうまく動作します。しかし、私は本当に初期化リストを使用できるようにしたいと思います。
ありがとうございます!
最初は逆立ちそうですが、実際には実際に役立っています! – Korchkidu