Inicjalizacja elementu przy użyciu delegowanego konstruktora
Zacząłem wypróbowywać standard C ++ 11 i znalazłemto pytanie, które opisuje, jak wywołać swojego cora z innego cora w tej samej klasie, aby uniknąć posiadania metody inicjującej lub podobnej. Teraz próbuję tego samego z kodem, który wygląda tak:
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)
{
}
Ale to daje mi błąd:In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
Próbowałem przenieść pierwszą i ostatnią część Tokenizer na liście, ale to nie pomogło.
Jaki jest tego powód i jak powinienem to naprawić? Próbowałem przesunąćlines(lines)
do ciała zthis->lines = lines;
zamiast tego działa dobrze. Ale naprawdę chciałbym móc korzystać z listy inicjatorów.
Z góry dziękuję!