2010-12-14 29 views
0

在本地C++中,我們可以在類定義中使用枚舉招:枚舉招用C++/CLI

namespace EFoo 
{ 
    enum { a = 10; }; 
} 

class Foo 
{ 
    // Declare an array of 10 integers. 
    int m_Arr[EFoo::a]; 
}; 

然而,在C++/CLI管理枚舉,

public enum class EFoo 
{ 
    a = 10, 
}; 

EFoo ::一個couldn不會被隱式轉換爲int,因此枚舉技巧將不被允許。

有什麼解決方法嗎?

謝謝。

回答

2

嘗試:

arr[(int)EFoo.a]; 
+0

永遠不要認爲編譯器接受類定義中的轉換。 – Wilson 2010-12-14 23:48:56

+0

那麼,你不是在投射類或類的定義。你只是施放枚舉值。 – 2010-12-14 23:52:43

4

如果你只是想實現「enum黑客」,你不應該這樣做,在任何近期的編譯器,因爲它們將支持static const成員聲明。

class Foo 
{ 
private: 
    static const int ARRAY_SIZE = 10; 
    int m_arr[ARRAY_SIZE]; 
}; 

否則,做一個int鑄像喬納森·伍德回答將努力從管理enum更改爲int

1

如果你不需要enacpsulation,爲什麼不把它聲明爲「enum」而不是「enum class」?然後,您可以在沒有演員的情況下使用它,而且也可以不使用類名。