Eu tenho um construtor que leva alguns argumentos. Eu supus que eles foram construídos na ordem listada, mas em um caso parece que eles estavam sendo construídos ao contrário, resultando em um abortamento. Quando eu invertai os argumentos, o programa parou de abortar. Este é um exemplo da sintaxe que estou usando. O problema é que a_ precisa ser inicializado antes de b neste caso. Você pode garantir a ordem de construção?
por exemplo
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};
Respostas:
Depende da ordem da declaração da variável de membro na classe. Então
a_
será o primeiro, entãob_
será o segundo no seu exemplo.fonte
-Wreorder
em gcc.Para citar o padrão, para esclarecimentos:
fonte
A referência padrão para isso agora parece ser 12.6.2, seção 13.3:
fonte