C++でクラス名と同名のスコープ有列挙子を定義することは可能でしょうか?
調べても出てこなかったので不可能だと思っているのですが、もし可能ならば方法を教えていただきたいです
以下の様なクラスを定義したいです
C++
1enum class A 2{ 3 e1 4} 5 6class A 7{ 8public: 9 A(A n); 10 ~A(); 11 12private: 13 14}; 15 16A::A(A n) 17{ 18} 19 20A::~A() 21{ 22}
そうしたい理由は何でしょうか?
列挙子で定義された状態を保存しておくクラスを作るうえで型名と列挙子の名前が同じほうが分かりやすいからです
例えばですが、変数名.next()で状態を一定の法則に従って変化させるなどの関数があるものです
"class"って予約語ですが?・・・https://ja.cppreference.com/w/cpp/keyword
"class"というクラスを作りたいわけではありません
列挙子と同名のクラスです
C++11 から 「enum」 とは別に「enum class」というのが存在するようです。 > cateye さん
個人的には、"enum class 名前" と "class 名前" の名前を同じにしたいということで良いのですよね?
個人的には、「列挙型名」+Iterator みたいな名前の方が分かりやすい気がしますが…。
enum class 名前 ← スコープ付き列挙型
{
列挙子
};
はい、そうです
このようにすれば可能ではないかと一つ思いついたのですが、ダメでした
static enum myenumA : int{};
class A {
public:
int x;
enum : myenumA {
e1
};
A(myenumA n) {
x = n;
}
};
了解^^; 勉強に成りました。
回答2件
あなたの回答
tips
プレビュー