3 回答
TA貢獻1824條經驗 獲得超6個贊
在C ++ 0x中也可以進行枚舉的前向聲明。以前,枚舉類型無法向前聲明的原因是因為枚舉的大小取決于其內容。只要枚舉的大小由應用程序指定,就可以向前聲明:
enum Enum1; //Illegal in C++ and C++0x; no size is explicitly specified.
enum Enum2 : unsigned int; //Legal in C++0x.
enum class Enum3; //Legal in C++0x, because enum class declarations have a default type of "int".
enum class Enum4: unsigned int; //Legal C++0x.
enum Enum2 : unsigned short; //Illegal in C++0x, because Enum2 was previously declared with a different type.
TA貢獻1875條經驗 獲得超5個贊
鑒于最近的發展,我在這里添加了一個最新的答案。
您可以在C ++ 11中轉發聲明枚舉,只要您同時聲明其存儲類型即可。語法如下所示:
enum E : short;void foo(E e);....enum E : short{
VALUE_1,
VALUE_2,
....}實際上,如果函數永遠不會引用枚舉的值,那么此時您根本不需要完整的聲明。
G ++ 4.6及更高版本(-std=c++0x或-std=c++11更新版本)支持此功能。Visual C ++ 2013支持這一點; 在早期版本中它有一些我尚未想到的非標準支持 - 我發現一些簡單的前向聲明是合法的,但是YMMV。
- 3 回答
- 0 關注
- 589 瀏覽
添加回答
舉報
