Ich habe angefangen, den C ++ 11-Standard auszuprobieren, und ich habe diese Frage gefunden , 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)
{
}
Dies gibt mir jedoch den Fehler:
In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegationIch 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 das beheben? Ich habe versucht lines(lines), den Körper this->lines = lines;stattdessen mit zu bewegen , und es funktioniert gut. Aber ich würde wirklich gerne die Initialisierungsliste verwenden können.