1. ホーム
  2. c++

[解決済み] 匿名列挙型の使用法

2023-09-02 09:29:18

質問

匿名の目的は何ですか? enum のような宣言をすることです。

enum { color = 1 };

と宣言すればよいのでは? int color = 1 ?

どのように解決するのですか?

列挙型はスペースを取らず、不変です。

もしあなたが const int color = 1; を使えば、ミュータビリティの問題は解決しますが、もし誰かが color ( const int* p = &color; ) の場合、そのためのスペースを確保する必要があります。これは大きな問題ではないかもしれませんが、明示的に が欲しい のアドレスを取得できるようにする必要があります。 color のアドレスを取得できるようにしたい場合は、それを防ぐことができます。

また、クラス内で定数フィールドを宣言する場合、そのフィールドは static const (である必要があります(最近の C++ ではそうではありません)。 であり、すべてのコンパイラが static const メンバのインライン初期化をサポートしているわけではありません。


免責事項です。 この回答は、以下のようなアドバイスをするものではありません。 enum を使えということではありません。あなた(またはあなたの同僚)がより読みやすいと思うことをすればいいのです。この回答は、いくつかの理由を挙げているだけです。 を使う方が良い。 enum .