我想构造没有默认构造函数的类成员。 基本上我想做的事情在类的构造函数如下:有条件地构造不带默认构造函数的成员对象
class X{
public:
X(Config config) {
if (config.getBool) memberA("yes");
else memberA("no");
}
}
的问题是,因为之前说没有为类memberA
没有默认构造函数,因此编译器不能构建它造成的错误。 很显然,我可以这样做:
class X{
public:
X(Config config) : memberA("yes") {
if (!config.getBool) memberA = MemberAClass("no");
}
}
,但我不知道是否有一种方法来构造成员,如果条款,但没有以防止在类的静态成员的副作用调用构造两次使用。
更新:我忘了提,我真的需要两个参数,但原则反正工作:
X::X(Config cfg):member(cfg.getBool()?"yes":"no",cfg.getBool()?1:2){};
'级X :: X(配置):memberA(配置。 getBool?“yes”:“no”){}'? – Casey
@Casey这应该是一个答案。 – juanchopanza
是的,这基本上是伎俩,谢谢:) – Marste