答えて
許可されているという点で有効です。おそらく良いデザインではないでしょう。
なぜ、私はあなたが探している答えがわからないのですか?許可されていない場合、同じ値を参照する2つの列挙を持つことが理にかなった場合を防ぎます。 (これが意味を成す例を簡単に思い付くことができると確信しています)
だから私ができることを制限するか、通常は重複を望まないので制限があるかの選択であれば、私はそれがそうであるように投票したでしょう。
Qの理由の部分には答えません。ここで回答した部分は、 '-pedantic'を使って与えられたコードをコンパイルするだけでチェックできます。 –
@als:私はデザイナーが何を考えているのか分かりませんが、私の応答は実際に何をしようとしたのですか? –
答えの編集履歴のタイムスタンプとコメントの編集履歴のタイムスタンプを比較すると、私が答えたときのコメントは*「それは許可されているという点では有効ですが、おそらく良いデザインではありません」* *なぜですか?* –
フレームワークを開発したとします。このフレームワークではパラメータ化にenumを使用しています
何らかの理由で、以前使用されていた用語に満足できなくなっています。
この用語を置き換えるだけで、既存のソフトウェアが破損する可能性があります。古い用語と新しい用語を提供することを決定しました(少なくとも1回のリリースサイクルで)。
#include <iostream>
using namespace std;
enum color {blue, black=3, yellow=3};
int main()
{
color a = blue;
color b = black;
color c = yellow;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
同じようにするのは良い考えではありません。
C++ standard、セクション7.2、パート1では、定数式が整数型または列挙型であることのみが必要です。定数値を区別する必要はありません。これにより、コードをより表現力豊かにすると考えられる場合、定数のエイリアシングに柔軟性がもたらされます。例えば、
enum color {red=1,green=2,blue=3,max_color=3};
if (myColor > max_color) {/* report an error *}
はい、それが有効だ
enum color {red=1,green=2,blue=3};
if (myColor > blue) {/* report an error *}
よりも優れています。言語仕様に違反していないからです。以下は、ドラフトN3242から引用されますが、一例で見ることができるように、異なる列挙型に関連付けられている値は、別個のものである必要はない。
The identifiers in an enumerator-list are declared as constants,
and can appear wherever constants are required. An enumeratordefinition
with = gives the associated enumerator the value indicated by the
constant-expression. The constant-expression shall be an integral
constant expression (5.19). If the first enumerator has no initializer,
the value of the corresponding constant is zero. An enumerator-definition without
an initializer gives the enumerator the value obtained by
increasing the value of the previous enumerator by one.
[ Example:
enum { a, b, c=0 };
enum { d, e, f=e+2 };
defines a, c, and d to be zero, b and e to be 1, and f to be 3. —end example ]
- 1. これはなぜC(配列)では有効ではありませんか?
- 2. これはStrict XHTML 1.0でなぜ有効ですか?
- 3. なぜこれはTypescriptとFlowで有効ですか?
- 4. このJqueryはなぜ有効ではありませんか?
- 5. これはなぜ有効なPythonですか?
- 6. これはなぜ有効なCですか? ---({123;})123
- 7. 列挙型のどのような操作がC++で有効ですか?
- 8. スペースがSqlServerの有効な列名であるのはなぜですか?
- 9. プライベートクラスへのコンパニオンオブジェクト:なぜそれは有効ではありませんか?
- 10. ActiveRecordの列挙エラー:「有効な値ではありません」
- 11. なぜこれが有効にならないのですか?
- 12. これは有効なPHPではないのはなぜですか?
- 13. なぜこれが有効なのですか
- 14. System.Net.Http.HttpMethodが列挙型ではなく、クラスであるのはなぜですか?
- 15. Python enumでSQLAlchemy列挙型列を定義すると、 "ValueError:有効な列挙型ではありません"
- 16. これは有効なJSON文字列ですか?エラーがどこにある
- 17. Windowsでネットワーク共有の列挙が遅いのはなぜですか?
- 18. なぜこれは有効なsaml2要求ではありませんか?
- 19. これはなぜ有効なTypeScriptではありませんか?
- 20. はなぜWCFは有効なものとして列挙
- 21. これはC++の有効な2D配列定義ですか?
- 22. "エラーアプリケーションドメインは有効なドメインではありません。"しかし、それは有効なドメインです
- 23. `a :: - func;`はなぜ有効ですか?
- 24. これはsocket.ioで有効ですか?
- 25. この戻り値の型はなぜ有効ですか?
- 26. シングルトンのNSAssert:なぜこのコードは有効ですか?
- 27. これはCrossfilterでなぜそうですか?
- 28. これはどのように有効なPHPコードですか?
- 29. XSL:FOなぜinlineは "fo:table"の有効な子ではありませんか?これをどうすれば解決できますか?
- 30. Javaのint.classには何が入っていますか?それはなぜ有効なのでしょうか?
あなたはcase文には、黒と黄色の両方を使用することはできません。 – jacknad
構文エラーがあります。 'enum color = {blue、black = 3、yellow = 3};'、 'color'の後に' = 'を削除してください。 –
これは価値があるため、後方互換性のために列挙値を再利用することは珍しいことではありません。例えば、あなたのライブラリのバージョン1では 'enum color {blue、black、gray};を持ち、バージョン2ではあなたはアメリカの英語のために' enum color {blue、black、グレー、グレー=グレー}; '。 –