Доступ к перечислению из класса, оба из которых находятся в одном и том же пространстве имен - PullRequest
1 голос
/ 28 марта 2012

У меня есть что-то похожее на следующую настройку:

namespace MyNamespace
{
    enum MyEnum{
        Type1,
        Type2
    };

    class MyClass
    {
        private:
            void MyFunction( MyEnum::Type1 );
    };
}

Я бы предположил, что, поскольку MyEnum и MyClass находятся в пределах MyNAmespace, использование перечислимых типов в классе не будет проблемой, но когда я пытаюсь скомпилировать его, я получаю следующую ошибку:

'MyEnum::Type1' is not a type

Как я могу это исправить, чтобы я мог использовать свои enum и class в одном и том же пространстве имен?

Ответы [ 3 ]

1 голос
/ 28 марта 2012

MyEnum - это то, как вы бы на него ссылались.

namespace MyNamespace
{
    enum MyEnum{
        Type1,
        Type2
    };

    class MyClass
    {
        private:
            void MyFunction( MyEnum );
    };
}

где определение может выглядеть так:

namespace MyNamespace
{
  void MyClass::MyFunction( MyEnum val) {
    if (val == Type1)
      std::cout << "Type1" << std::endl;
  }
}
0 голосов
/ 28 марта 2012

MyEnum::Type1 является не типом.Это ценность.Попробуйте это:

void MyFunction( MyEnum );
0 голосов
/ 28 марта 2012

Введите ваше перечисление

typedef enum _MyEnum{ Type1, Typ2}MyEnum;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...