2011-09-13 63 views
1

我有連接錯誤時嘗試施放自己的枚舉,以解決賬面價值:普查員鑄造

typedef enum { 
    kACTextFirstName = kABPersonFirstNameProperty, // error: expression is not an integer constant expression 
    kACTextLastName = (int)kABPersonLastNameProperty, // error: expression is not an integer constant expression 
} ACFieldType; 

如何解決這個問題?

謝謝。


我需要使用ABAddressBook的框架常量的值,如kABPersonLastNameProperty或kABPersonFirstNameProperty給init我的枚舉。

+3

您應該接受一些答案... –

+0

您是否導入了正確的標題? – ughoavgfhw

+0

什麼是'kABPersonFirstNameProperty'? –

回答

5

在C中(與C++不同),聲明爲const的對象(即使用常量表達式初始化)不能用作常量。

你沒有理會向我們展示的kABPersonFirstNameProperty的聲明,但我「猜它的聲明是這樣的:

const int kABPersonFirstNameProperty = 42; 

如果需要使用該名稱kABPersonFirstNameProperty作爲一個常量表達式,你可以聲明爲一個宏:

#define kABPersonFirstNameProperty 42 

或作爲枚舉常數:

enum { kABPersonFirstNameProperty = 42 }; 

請注意,enum hack只允許聲明int類型的常量。

同樣對於kABPersonLastNameProperty

(你們爲什麼投其中一人int,而不是其他?)

如果不回答你的問題,那是因爲你沒有給我們足夠的信息。