この質問は私を夢中にさせています。クラスに合格できるように、それを正しくする必要があります。試してくださった皆様、ありがとうございます。
列挙型の安全性を調べる簡単なプログラムを C++ で作成します。列挙型に少なくとも 10 の異なる操作を含めて、何が正しくないか、単にばかげているかを判断します。
この質問は私を夢中にさせています。クラスに合格できるように、それを正しくする必要があります。試してくださった皆様、ありがとうございます。
列挙型の安全性を調べる簡単なプログラムを C++ で作成します。列挙型に少なくとも 10 の異なる操作を含めて、何が正しくないか、単にばかげているかを判断します。
これは、列挙型を使用した 10 種類の操作を示す、完全に機能するプログラムです。詳細はコードに記載され、参照は投稿の下部にあります。
まず、列挙型とは何かを理解することが非常に重要です。これに関するリファレンスについては、列挙型 - 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 の operator| などをオーバーロードする別の方法で実行できます。これは一般的に使用される手法です。追加の参照については、C++ で列挙型をフラグとして使用する方法を参照してください。.
ビット演算のリファレンスについては、C および C++ のビット演算演算子: チュートリアルを参照してください。
C++ 11 を使用すると、厳密に型指定された列挙型など、追加の方法で列挙型を使用できます。