0
は、以下のコードを検討:なぜ列挙型の名前の前に列挙型の文字数があるのですか?
#include <iostream>
#include <typeinfo>
enum class Colors
{
Red,
Blue,
Green
};
int main()
{
std::cout << typeid(Colors::Red).name();
return 0;
}
上記プログラムの出力は6Colors
あります。列挙型が「スコープではない」(class
キーワードなしのenum)であっても、それは当てはまります。別の列挙型が定義されている場合、たとえばAnimals
の場合、その型名は7Animals
になります。これは将来考慮すべきものではありませんが、なぜコンパイラがそれを行うのかを知りたいと思っています。
「上記のプログラムの出力は '6Colors'ある」---それが依存します実装(コンパイラのバージョン、プラットフォーム) – Brian
これは「名前の変更」と呼ばれ、すべてのコンパイラには独自の方法があります(https://en.wikipedia.org/wiki/Name_mangling#How_different_compilers_mangle_the_same_functions)。 –
Visual Studio 2017は "enum Colors"と "enum Animals"を出力します。 *恥ずかしがり屋*ブードゥー –