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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage