Maneira correta de inicializar condicionalmente uma variável de membro C ++?

Tenho certeza que esta é uma pergunta muito simples. O código a seguir mostra o que estou tentando fazer:

<code>class MemberClass {
public:
    MemberClass(int abc){ }
};

class MyClass {
public:
    MemberClass m_class;
    MyClass(int xyz) {
        if(xyz == 42)
            m_class = MemberClass(12);
        else
            m_class = MemberClass(32);
    }
};
</code>

Isso não compila, porquem_class está sendo criado com um construtor vazio (que não existe). Qual é o jeito certo de fazer isso? Meu palpite é usar ponteiros e instanciarm_class usandonew, mas espero que haja um caminho mais fácil.

Editar: Eu deveria ter dito anteriormente, mas o meu problema real tem uma complicação adicional: eu preciso chamar um método antes de inicializar m_class, a fim de configurar o ambiente. Assim:

<code>class MyClass {
public:
    MemberClass m_class;
    MyClass(int xyz) {
        do_something(); // this must happen before m_class is created
        if(xyz == 42)
            m_class = MemberClass(12);
        else
            m_class = MemberClass(32);
    }
};
</code>

É possível conseguir isso com truques de lista de inicialização?

questionAnswers(6)

yourAnswerToTheQuestion