He comenzado a probar el estándar C++ 11 y encontré this pregunta que describe cómo llamar a su ctor desde otro ctor en la misma clase para evitar tener un método init o similar. Ahora estoy intentando lo mismo con el código que se parece a esto:Inicialización de miembro al usar el constructor delegado
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)
{
}
Pero esto me está dando el error: In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
tengo intenté mover la parte Tokenizer() primero y último en la lista, pero eso no ayudó.
¿Cuál es la razón detrás de esto y cómo debo solucionarlo? Intenté mover el lines(lines)
al cuerpo con this->lines = lines;
y funciona bien. Pero me gustaría poder usar la lista de inicializadores.
¡Gracias de antemano!
Parece contradictorio al principio, pero realmente está ayudando en realidad! – Korchkidu