2012-10-02 21 views
3

有在Visual C的enum class兩個互相矛盾的定義++ 2012:在Visual C++ 2012中,「enum class」是什麼意思?

  • enum
  • 的C++ 11,類型安全版本的C++/CLI,System::Enum派生類型,等同於靜態一個ref class const整型成員。

當您啓用或禁用/ clr開關時,enum class的含義是否會發生變化?

+0

名稱是Visual C++ 2012.它是產品(版本17的編譯器!)的_version_ 11,但產品_name_是Visual C++ 2012(它是Visual Studio 2012的一部分)。 –

+0

@JamesMcNellis Visual C++ 11是Microsoft通常引用它的方式(http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx)(http://msdn.microsoft.com /en-us/magazine/hh852594.aspx)(http://herbsutter.com/2012/02/29/vc11-beta-on-feb-29/)。顯然官方命名是「Visual Studio 2012中的Visual C++」。無論如何,我不會再爭論這件事。 – Asik

+0

是的,所有的預覽版本都使用「11.」當最終版本被製作時,它被打上了「2012年」的標籤。 –

回答

7

託管枚舉必須具有訪問說明符(publicprivate)。 C++ 11範圍枚舉不能具有訪問說明符。例如,

enum class E { e0 }; 

public enum class F { f0 }; 
private enum class G { g0 }; 

E是有效的在C++,C++/CLI和C++/CX,並且它是一個普通的C++作用域枚舉。

FG僅在C++/CLI和C++/CX有效的,並且它們命名管理枚舉(在C++/CLI)或Windows運行時枚舉(在C++/CX)。