Tengo un constructor que toma algunos argumentos. Supuse que se construyeron en el orden indicado, pero en un caso parece que se construyeron en reversa, lo que resultó en un aborto. Cuando invertí los argumentos, el programa dejó de abortar. Este es un ejemplo de la sintaxis que estoy usando. La cuestión es que a_ necesita inicializarse antes que b_ en este caso. ¿Pueden garantizar el orden de construcción?
p.ej
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};
Respuestas:
Depende del orden de la declaración de la variable miembro en la clase. Entonces
a_
será el primero, luegob_
será el segundo en su ejemplo.fuente
-Wreorder
en gcc.Para citar el estándar, para aclarar:
fuente
La referencia estándar para esto ahora parece ser 12.6.2 sección 13.3:
fuente