2011-10-11 64 views
1

我已經圍繞一個枚舉包裹一個結構來獲得範圍枚舉。例如:在類裏面使用enum裏面的struct?

namespace Xyz 
{ 
    struct SortDirection 
    { 
     enum Enum {ASC, DESC}; 
    }; 

    class MyClass 
    ... 

這工作正常。現在,我試圖定義相同類型枚舉/結構組合,但這次類:

class MainDialog 
{ 
public: 
    ... 
private: 
    struct SomeType 
     enum Columns { 
     ROW_NUMBER_COLUMN, 
     NAME_COLUMN, 
     AGE_COLUMN, 
     COLUMN_MAX_COUNT_ 
     }; 
    }; 

} 

但是這給了我一個智能感知錯誤:

Error: invalid combination of type specifiers

當我嘗試編譯我得到:

1>c:\something\maindialog.h(80): error C2236: unexpected 
'enum' 'MainDialog::Columns'. Did you forget a ';'? 

枚舉工作正常的結構裏面,但只要我把它包在一個結構我得到這個錯誤。

+3

這是數據結構的顛峯。 –

回答

7

嘗試

struct SomeType { // Note the open brace 
+0

doh!錯過了 – User

+0

我去過那裏......我懷疑這發生在我們所有人身上。 – andand

2

你已經錯過了開括號。編譯器看到struct SomeType enum Columns,並不知道如何處理它。

1

//這是正確的代碼。

private:  
    struct SomeType 
    {   
     enum Columns 
     {   
      ROW_NUMBER_COLUMN, 
      NAME_COLUMN, 
      AGE_COLUMN, 
      COLUMN_MAX_COUNT_ 
     }; 
    };