私はC++標準を少し読んで、enumの動作を理解しようとしてきました。実際に私が考えていたよりも多くのことがあります。C++でのC++列挙型の基本的な型0x
スコープ付きの列挙では、enum-base句で指定されていない限り、基底型がint
であることは明らかです(これは整数型でもかまいません)。スコープを持たない列挙型の
enum class color { red, green, blue}; // these are int
は、動作しますし、それがあることが必要である場合を除き、それは、int型よりも大きくならないことを任意の整数タイプにすることができ、基礎となるタイプのように思えます。
enum color { red, green, blue}; // underlying type may vary
、スコープ外enumarationsの基になる型が標準化されていないので、1のシリアライズインスタンスに対処する最良の方法は何ですか?今のところ私はint
に変換していて、int
にシリアル化し、スイッチに変数enum
を設定すると読んでいますが、ちょっとぎこちないようです。より良い方法がありますか?
enum color { red, green, blue };
color c = red;
// to serialize
archive << (int)c;
// to deserialize
int i;
archive >> i;
switch(i) {
case 0: c = red; break;
case 1: c = green; break;
case 2: c = blue; break;
}
列挙型クラスがあるだけでC++ 0xの... – Klaim
+1、この質問は-1edた理由がわからない... –
おそらく質問者は明らかに、既存および提案された標準化文書を区別することはできませんので? –