2012-01-20 54 views
2

這可能是一個微不足道的問題,但我不能克服枚舉類數據的問題:未定義的符號枚舉類

enum class enumTest 
{ 
    VALUE0 = 0, VALUE1 = 1, VALUE2 = 2 
}; 

void __fastcall TForm1::Button1Click (TObject* Sender) 
{ 
int a = VALUE1; 
} 

我得到:錯誤:未定義的符號:「VALUE1」

將枚舉類枚舉改爲:

enum //class enumTest 

編譯器正常工作。

不幸的是我不能這樣做,因爲它被定義到TLB/OCX包含文件中,就像許多其他聲明一樣。 這發生在不同廠商的不同類型的OCX上。

回答

13

一個enum class被稱爲範圍枚舉。您需要在枚舉範圍內使用枚舉器。例如,

int a = enumTest::VALUE1; 
+0

我以爲'enum class'意味着你不能轉換爲int,反之亦然。所以'a'必須是'enumTest'類型才能編譯。 – pezcode

+0

這也意味着。 –

+0

問題解決了,謝謝! – Giovanni