この質問は私を夢中にさせています。私はクラスを通過できるように、それを正しく取得する必要があります。お試しいただきありがとうございます。列挙型のどのような操作がC++で有効ですか?
列挙型の安全性を調べるために、C++で簡単なプログラムを記述します。列挙型に少なくとも10の異なる操作を含めて、間違っているか愚かなことが合法であるかを判断します。
この質問は私を夢中にさせています。私はクラスを通過できるように、それを正しく取得する必要があります。お試しいただきありがとうございます。列挙型のどのような操作がC++で有効ですか?
列挙型の安全性を調べるために、C++で簡単なプログラムを記述します。列挙型に少なくとも10の異なる操作を含めて、間違っているか愚かなことが合法であるかを判断します。
ここでは、列挙型で10種類の操作を示す完全に動作するプログラムを示します。詳細はコードに記載されており、参照は投稿の一番下に表示されます。
まず、enumが何であるかを理解することが非常に重要です。これについては、Enumerated Types - enumsを参照してください。以下のコードでは、数学演算、ビット演算子を使用し、列挙型の値を使用して配列をデフォルトのサイズに初期化します。
#include <iostream>
using namespace std;
enum EnumBits
{
ONE = 1,
TWO = 2,
FOUR = 4,
EIGHT = 8
};
enum Randoms
{
BIG_COUNT = 20,
INTCOUNT = 3
};
int main(void)
{
// Basic Mathimatical operations
cout << (ONE + TWO) << endl; // Value will be 3.
cout << (FOUR - TWO) << endl; // Value will be 2.
cout << (TWO * EIGHT) << endl; // Value will be 16.
cout << (EIGHT/TWO) << endl; // Value will be 4.
// Some bitwise operations
cout << (ONE | TWO) << endl; // Value will be 3.
cout << (TWO & FOUR) << endl; // Value will be 0.
cout << (TWO^EIGHT) << endl; // Value will be 10.
cout << (EIGHT << 1) << endl; // Value will be 16.
cout << (EIGHT >> 1) << endl; // Value will be 4.
// Initialize an array based upon an enum value
int intArray[INTCOUNT];
// Have a value initialized be initialized to a static value plus
// a value to be determined by an enum value.
int someVal = 5 + BIG_COUNT;
return 0;
}
上記なさのサンプルコードを使用すると、演算子をオーバーロードところで、別の方法で行うことができます| EnumBitsのためなど、。これは一般的に使用されるテクニックです。追加の参考文献はHow to use enums as flags in C++?を参照してください。ビット演算の参考のために
、あなたがそのようなstrongly typed enumsなどの追加の方法で列挙型を使用することができますC++ 11を使用してBitwise Operators in C and C++: A Tutorial
を見てみましょう。
**モデレーター注**この回答のコメントは純粋なノイズであり、パージされています。 –
これまでに何がありますか? – Lou
これは複雑な答えですが、私はすぐに回答を投稿します。しかし、あなたが今までに持っていたことを示すことは、私たちにとって大きな助けとなります。 – josephthomas
どの標準ですか? C++ 03またはC++ 11? – bitmask