查看此演示代码:
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 = {
^~~
怎么了?是的,我想初始化一个不在类定义中的静态私有类成员。
有人可以向我解释该怎么做吗?预先感谢!
您的代码中有很多问题:
P::set
的类型enum class
,但没有对枚举值进行质量处理(gold
等)此代码按预期工作:
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
以及枚举的类标识符。