我试图在 C++ 中模仿 Java 枚举,所以我创建了如下所示的代码(当然,我删除了与我的问题无关的任何内容):
我的枚举.hpp
MyEnum
{
public:
class Value1;
class Value2;
static Value1 VALUE1;
static Value2 VALUE2;
private:
MyEnum(std::string name);
};
class MyEnum::Value1 public MyEnum
{
private:
Value1();
};
class MyEnum::Value2: public MyEnum
{
private:
Value2();
};
我将构造函数设为私有,因此枚举值的唯一实例是 BaseEnum 的静态成员。如何定义它们?
我的枚举.cpp
MyEnum::Value1 VALUE1=MyEnum::Value1();
这给了我
error: calling a private constructor of class 'MyEnum::Value1'
编辑:那太简单了。我刚刚忘记将 MyEnym:: 添加到值中。我从 Java 回到 C++ 时遇到的许多日常小问题之一。另外,在我的问题代码中,我忘记添加朋友声明,这是我的原始代码中的。感谢您的回答。