コンパイラが矛盾した結果を出すので、enumクラスが最終的なものかどうか不思議です。しかし、打ち鳴らす(http://rextester.com/l/cpp_online_compiler_clang)とそれをコンパイルすることは私にエラーを与える...のVisual Studio 2015のコンパイラ(http://rextester.com/l/cpp_online_compiler_visual)が働くとC++での最後の列挙型クラス
#include <iostream>
enum class some_enums final : char
{
a = 'a',
b = 'b',
c = 'c'
};
int main()
{
some_enums aa = some_enums::a;
std::cout << "aa=" << static_cast<char>(aa) << std::endl;
}
がこれをコンパイル:
は、コードを考えてみましょう
source_file.cpp:3:30: error: expected ';' after top level declarator
enum class some_enums final : char
I標準のどこでも最終列挙クラスの痕跡は見られませんでしたので、私は信じています...しかし、Visual StudioはMSDN(https://msdn.microsoft.com/en-us/library/2dzy4k6e.aspx)に記載されていませんが、このケースではなぜ受け入れますか?
と、最終的には列挙型にどのような影響がありますか? – bolov
[enum class](https://msdn.microsoft.com/en-us/library/a6cskb49.aspx)ドキュメントにも記載されていません。私はこれがコンパイラのバグだと思う。 – user2079303
C++では、 'char'のような組み込み型からクラスを継承することはできません。 – Sergey