[解決済み] クラス内でのenumの宣言
2022-04-24 23:16:52
質問
次のコード・スニペットでは
Color
enum は
Car
クラスは、enum の範囲を限定し、グローバルな名前空間を汚染しないようにするためです。
class Car
{
public:
enum Color
{
RED,
BLUE,
WHITE
};
void SetColor( Car::Color color )
{
_color = color;
}
Car::Color GetColor() const
{
return _color;
}
private:
Car::Color _color;
};
(1)これは、範囲を限定するために
Color
列挙することができますか? それとも
Car
クラスではなく、独自の名前空間または構造体の中にある可能性は? 後者を提唱し、列挙に関するいくつかの良い点を論じているこの記事を、今日見つけた。
http://gamesfromwithin.com/stupid-c-tricks-2-better-enums
.
(2)この例では、作業時に
内
として列挙するのが最善でしょうか?
Car::Color
それとも
Color
で十分です(前者の方が良いと思いますが、万が一、別の
Color
enum がグローバル名前空間で宣言されています。 そうすることで、少なくとも、参照している列挙型を明示することができます)。
解決方法は?
-
もし
Color
は、単にCar
の場合は、そのように範囲を限定することになります。もし、別のColor
enumは、他のクラスが使用するため、グローバルにしたほうがよいでしょう(または、少なくともCar
). -
違いはありません。もしグローバルなものがあれば、ローカルなものの方が現在のスコープに近いので、いずれにしても使われます。もしこれらの関数をクラス定義の外部で定義する場合は、明示的に
Car::Color
を関数のインターフェイスに追加します。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】なぜenumクラスはプレーンなenumより好ましいのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み】C++のenumクラスはメソッドを持つことができますか?