2012-04-07 13 views
-1

この質問は私を夢中にさせています。私はクラスを通過できるように、それを正しく取得する必要があります。お試しいただきありがとうございます。列挙型のどのような操作がC++で有効ですか?

列挙型の安全性を調べるために、C++で簡単なプログラムを記述します。列挙型に少なくとも10の異なる操作を含めて、間違っているか愚かなことが合法であるかを判断します。

+1

これまでに何がありますか? – Lou

+1

これは複雑な答えですが、私はすぐに回答を投稿します。しかし、あなたが今までに持っていたことを示すことは、私たちにとって大きな助けとなります。 – josephthomas

+2

どの標準ですか? C++ 03またはC++ 11? – bitmask

答えて

-1

ここでは、列挙型で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

を見てみましょう。

+0

**モデレーター注**この回答のコメントは純粋なノイズであり、パージされています。 –

関連する問題