[C++] c ++ كيفية الحصول على نفس الأعضاء الأعضاء في أسماء إنوم مختلفة دون الحصول على إرور: ريدفينتيون؛ كان التعريف السابق "العداد"


Answers

إذا كان لديك إمكانية استخدام C ++ 11 أود أن أوصي لاستخدام ميزة الطبقة إنوم لتجنب الاصطدامات:

enum class GameObjectType
{
     NINJA_PLAYER

};
enum class GameObjectTypeLocation
{
    NONE,
    MASSAGE_ALL,  //this is for ComponentMadiator
    NINJA_PLAYER


};

تحرير: إذا لم يكن لديك هذه القدرة، ثم سوف تحتاج إلى استخدام اثنين من مساحات أسماء مختلفة لكل إنوم.

Question

لدي ملف التكوين الذي أضمه في كل ملفاتي هناك إنومز مختلفة ولكن داخل كل إنوم هناك نفس العناصر عنصر على سبيل المثال: config.h

enum GameObjectType
{
     NINJA_PLAYER

};
enum GameObjectTypeLocation
{
    NONE,
    MASSAGE_ALL,  //this is for ComponentMadiator
    NINJA_PLAYER


};

ولكن عندما أحاول تجميع المشروع مع استدعاء البوم مع اسم صحيح إنوم

m_pNinjaPlayer = (NinjaPlayer*)GameFactory::Instance().getGameObj(GameObjectType::NINJA_PLAYER);
    ComponentMadiator::Instance().Register(GameObjectTypeLocation::NINJA_PLAYER,m_pNinjaPlayer);

أواجه خطأ في التجميع:

error C2365: 'NINJA_PLAYER' : redefinition; previous definition was 'enumerator' (..\Classes\GameFactory.cpp)
2>          d:\dev\cpp\2d\cocos2d-x-3.0\cocos2d-x-3.0\projects\lettersfun\classes\config.h(22) : see declaration of 'NINJA_PLAYER'

كيف يمكنني الاحتفاظ في config.h عدة إنومز مع أسماء مختلفة ولكن مع نفس العناصر أسماء؟