Właściwy sposób warunkowego zainicjowania zmiennej składowej C ++?

Jestem pewien, że to naprawdę proste pytanie. Poniższy kod pokazuje, co próbuję zrobić:

<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>

To się nie kompiluje, ponieważm_class jest tworzony z pustym konstruktorem (który nie istnieje). Jak to zrobić? Domyślam się, że używam wskaźników i instancjim_class za pomocąnew, ale mam nadzieję, że jest łatwiejszy sposób.

Edytować: Powinienem był powiedzieć wcześniej, ale mój rzeczywisty problem ma dodatkową komplikację: muszę wywołać metodę przed zainicjowaniem m_class, aby skonfigurować środowisko. Więc:

<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>

Czy jest to możliwe dzięki fantazyjnym sztuczkom z listą inicjalizacyjną?

questionAnswers(6)

yourAnswerToTheQuestion