查看此演示代码:
enum class Solid {gold, silver, wood};
enum class Liquid {bier, wine, oil};
enum class Gas {air, elio, argon};
class P {
private :
struct Set {
Solid solid;
Liquid liquid;
Gas gas;
};
static const Set set[];
};
const P::set = {
{gold, wine, air}
};
GCG告诉我:
error: ‘const P::Set P::set []’ is private within this context
const P::set = {
^~~
怎么了? 是的,我想初始化一个不在类定义中的静态私有类成员。
有人可以向我解释该怎么做吗? 预先感谢!
答案 0 :(得分:0)
您的代码中有一堆问题:
P::set
的类型enum class
,但是没有保证枚举值的质量(gold
等)答案 1 :(得分:0)
此代码按预期工作:
enum class Solid {gold, silver, wook};
enum class Liquid{bier, wine, oil};
enum class Gas{air, elio, argon};
class P {
private:
struct Set {
Solid solid;
Liquid liquid;
Gas gas;
};
static const Set set[];
};
const P::Set P::set[]{ Solid::gold, Liquid::wine, Gas::air };
您在初始化时忘记了类型标识符P::Set
以及枚举的类标识符。