C++ 筆記:OPERATOR::AND is not an aggregate type

2006/02/22
~ 阿亮 ~
最近在用 enum 時,遇到一個問題,如下:
class A
{
public:
enum OPERATOR
{
AND=0,
OR
};

dosomething(int type=OPERATOR::AND);

}

這段在 VC7.1 編譯得過,但在 gcc 下就不會過了,就會呈現 ‘OPERATOR::AND’ is not an aggregate type 的錯誤訊息了,網路上查一下得知,

Enumerators are names in the same scope where the enumeration type is declared.

所以,必需寫成如下:

class A

{

public:

enum OPERATOR

{

AND=0,

OR

};

dosomething(int type=A::AND);

}

這樣在兩個平台就都可以編譯了,但真是傷腦筋了,我倒覺得 VC7.1 的用法比較 Make Sense 哩!! 比如我想用兩組 enum type,而其中的成員命名一樣? 這要怎樣用?

class A

{

public:

enum OPERATOR

{

DISABLE=0,

ENABLE

};

enum SEARCH

{

DISABLE=0,

EXACT,

LOCAL_OPTIMIZE

};

dosomething(int search_type=A:ISABLE);

}

目前我只知道在 class 外的 enum 宣告,可以用 namespace 的方式來達到此目的,比如

namespace Sense{
enum SenseType
{
Vision, Hearing, Touch, Smell
};
}

就可以用 Sense::Vision 等..

但 class 內? 目前我還不知道,還沒有這個需要 ^_^ 有需要再研究。



歡迎留言

敝站會審核留言的適宜性,您的留言可能會較晚發佈,而且小弟保留刪除的權利!!

站內搜尋



本站其他服務

本站其他軟體



  • 油價快訊App (OilPrices)

    依據油價及匯率,估算台灣下週油價,另外提供三週、一年以及三年的歷史變化,以及週末下午推播通知最新油價預估或公告。


  • 台灣空污警報(AirInfo)

    設定特定站點為推播通知關注點後,當該站點空氣品質變糟時,即時推播通知給您。另外提供站點附近基本天氣預測資料。


  • 標案快訊

    讓你可以輕鬆追蹤含有您想要關注關鍵詞的任何採購標案,只要有最新的資訊,「標案快訊」即會推播通知給你.


  • 臉書粉絲專頁搜尋 (FPSearch)

    不用登入臉書即可搜尋臉書粉絲專頁(臉書粉絲團)所公開的文章。您可以指定特定日期範圍之前的文章,也可設定搜尋粉絲專頁內包含特定關鍵詞的文章。


  • 當令蔬果花卉(AgriInfo)

    是不是常常在超市看到水果蔬菜的價格,總是不確定是當季蔬果?這個服務就是幫你很快判斷眼前的蔬果花卉的價格是否便宜。


  • 下一班公車(nextBus)

    這個 app 只要開啟後,就根據定位幫你過濾出附近站牌的時刻表,以及提供相關公車預計到站的時間,方便您在很快時間內確定要坐的哪一班公車