我想構造沒有默認構造函數的類成員。 基本上我想做的事情在類的構造函數如下:有條件地構造不帶默認構造函數的成員對象
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