C++ с использованием enum из другого класса

Я создал класс Adresy:

class Adresy {
    public:
        static const DWORD hp = 0x947000;
        static const DWORD mp = 0x7B2084;
        static const DWORD cap = 0x97EE94;
        enum Flags
        {
            None = 0,
            Poisoned = 1,
            Burning = 2,
            ProtectedByMagicShield = 16
        };
};

Когда я пытаюсь использовать его в этом примере:

if(( (DWORD) adr.ProtectedByMagicShield & pFlags) == (DWORD) ProtectedByMagicShield){
//...
}

там написано выдает ошибку: 'ProtectedByMagicShield' : undeclared identifier...

pFlags это DWORDЯ использую C++.NET.

1 ответ

Решение
if(( (DWORD) Adresy::ProtectedByMagicShield & pFlags) == (DWORD) Adresy::ProtectedByMagicShield){
    //...
}

Вам нужно использовать имя класса и маркер области видимости (::) для доступа к значениям перечисления.

Это связано с тем, что enum принадлежит не конкретному экземпляру вашего класса, а самому классу, например, статическим членам const.

Другие вопросы по тегам