Elementinitialisierung unter Verwendung des delegierten Konstruktors
Ich habe angefangen, den C ++ 11-Standard auszuprobieren, und ich habe ihn gefundendiese Frage, die beschreibt, wie Sie Ihren ctor von einem anderen ctor in derselben Klasse aufrufen, um eine init-Methode oder ähnliches zu vermeiden. Jetzt versuche ich dasselbe mit Code, der so aussieht:
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)
{
}
Aber das gibt mir den Fehler:In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
Ich habe versucht, den Tokenizer () - Teil zuerst und zuletzt in der Liste zu verschieben, aber das hat nicht geholfen.
Was ist der Grund dafür und wie soll ich es beheben? Ich habe versucht, die zu bewegenlines(lines)
zum Körper mitthis->lines = lines;
stattdessen und es funktioniert gut. Aber ich möchte wirklich in der Lage sein, die Initialisierungsliste zu verwenden.
Danke im Voraus!