Инициализация члена при использовании делегированного конструктора
Я начал опробовать стандарт C ++ 11 и обнаружил, чтоэтот вопрос, который описывает, как вызвать ваш ctor из другого ctor в том же классе, чтобы избежать использования метода init или тому подобного. Теперь я пытаюсь сделать то же самое с кодом, который выглядит следующим образом:
HPP:
class Tokenizer
{
public:
Tokenizer();
Tokenizer(std::stringstream *lines);
virtual ~Tokenizer() {};
private:
std::stringstream *lines;
};
каст:
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;
вместо этого и работает нормально. Но я действительно хотел бы иметь возможность использовать список инициализатора.
Заранее спасибо!