我敢肯定这是一个非常简单的问题。以下代码显示了我正在尝试做的事情:
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);
}
};
这不会编译,因为m_class
是使用空构造函数(不存在)创建的。这样做的正确方法是什么?我的猜测是使用指针和实例化m_class
using new
,但我希望有一种更简单的方法。
编辑:我应该早点说,但我的实际问题还有一个复杂的问题:我需要在初始化 m_class 之前调用一个方法,以便设置环境。所以:
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);
}
};
是否可以通过花哨的初始化列表技巧来实现这一点?