Ho iniziato a provare lo standard C++ 11 e ho trovato la domanda this che descrive come chiamare il tuo ctor da un altro operatore nella stessa classe per evitare di avere un metodo init o simili. Ora sto cercando la stessa cosa con il codice che assomiglia a questo:Inizializzazione membro durante l'utilizzo del costruttore delegato
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)
{
}
Ma questo mi sta dando l'errore: In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
ho ho provato a spostare la parte Tokenizer() prima e ultima nell'elenco, ma ciò non ha aiutato.
Qual è la ragione di questo e come dovrei risolverlo? Ho provato a spostare il lines(lines)
sul corpo con this->lines = lines;
invece e funziona bene. Ma mi piacerebbe davvero essere in grado di utilizzare l'elenco di inizializzazione.
Grazie in anticipo!
All'inizio sembra controintuitivo, ma in realtà aiuta davvero! – Korchkidu