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