我只是好奇一個枚舉類是否可以是最終的......因爲編譯器給我矛盾的結果。C++中的最終枚舉類11
考慮代碼:
#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;
}
與Visual Studio編譯這個2015編譯器(http://rextester.com/l/cpp_online_compiler_visual)的作品......然而鏗鏘編譯它(http://rextester.com/l/cpp_online_compiler_clang)給我一個錯誤:
source_file.cpp:3:30: error: expected ';' after top level declarator
enum class some_enums final : char
我沒有看到標準中任何地方的最終枚舉類的痕跡,所以我將功勞歸於鏗鏘...然而爲什麼Visual Studio在這種情況下接受它,儘管它在MSDN中沒有提到(https://msdn.microsoft.com/en-us/library/2dzy4k6e.aspx)?
「enum」對枚舉有什麼影響? – bolov
[enum class](https://msdn.microsoft.com/en-us/library/a6cskb49.aspx)文檔沒有提及它。我懷疑這是一個編譯器錯誤。 – user2079303
另請注意,在C++中,類不能像'char'這樣的內置類型繼承。 – Sergey