私は C++ で Java 列挙型を模倣しようとしているので、次のようなコードを作成しました (もちろん、質問に関係のないものはすべて削除しました)。
MyEnum.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();
};
enum 値の唯一のインスタンスが BaseEnum の静的メンバーになるように、コンストラクターを非公開にしました。それらを定義する方法は?
MyEnum.cpp
MyEnum::Value1 VALUE1=MyEnum::Value1();
これは私に与えます
error: calling a private constructor of class 'MyEnum::Value1'
編集:それは単純すぎました。MyEnym:: を値に追加するのを忘れました。Java から C++ に戻ったときに遭遇する多くの小さな問題の 1 つです。また、私の質問のコードでは、元のコードにあったフレンド宣言を追加するのを忘れていました。回答ありがとうございます。