Использовать enum внутри структуры внутри класса? - PullRequest
1 голос
/ 11 октября 2011

Я обернул структуру вокруг перечисления, чтобы получить перечисление области видимости. E.g.:

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

    class MyClass
    ...

Это отлично работает. Теперь я пытаюсь определить тот же тип комбинирования enum / struct, но на этот раз внутри класса:

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

}

Однако это дает мне ошибку intellisense:

Ошибка: недопустимая комбинация спецификаторов типов

Когда я пытаюсь скомпилировать, я получаю:

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

Перечисление прекрасно работает не внутри структуры, но как только я обертываю его в структуру, я получаю эту ошибку.

Ответы [ 3 ]

7 голосов
/ 11 октября 2011

Попробуйте

struct SomeType { // Note the open brace
2 голосов
/ 11 октября 2011

Вы пропустили открывающую скобку. Компилятор видит struct SomeType enum Columns и не знает, что с ним делать.

1 голос
/ 11 октября 2011

// Это правильный код.

private:     
    struct SomeType 
    {        
        enum Columns 
        {         
            ROW_NUMBER_COLUMN,
            NAME_COLUMN,
            AGE_COLUMN,
            COLUMN_MAX_COUNT_
        };
     }; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...