Доступ к переменным в массиве Struct за пределами области видимости

Я новичок в SO, и все это выглядит очень полезным.

Мой код используется для cryengine, но, похоже, это хорошая проблема для C++. И давайте посмотрим правде в глаза, официальные форумы CE взорвать.

Проблема в том, что у меня есть доступ к переменной const char* массива struct вне области, в которой я назначаю переменную.

BuildingManager.h    

class CBuildingManager  {
public:
     struct SBuilding {
        const char* name;
    };

    struct SBuilding buildings[999];

    //string buildingName;
    const char* buildingList[999];

};

BuildingManager.cpp

void CBuildingManager::LoadBuildingXML() {
    int n = -1;

    const char *name;
    const char *value;

    //XML iterator is long and not necessary for example. n++ per iteration. 
    //it just works


                //last part of iterator
                for (size_t j = 0; j < tags->getNumAttributes(); j++) {

                    //Get building name in XML. This works
                    tags->getAttributeByIndex(j, &name, &value);

                    //assign building name to name in struct
                    buildings[n].name = value;

                    CryLog("%s", buildings[n].name);

                    buildingList[n] = buildings[n].name;
                }
            }   
        }
    }
}

void CBuildingManager::LogAction(int x) {

    //x modified by input. also works
    CryLog("%c", buildingList[x]); //this, however, does not

}

Таким образом, в основном, я могу напечатать название здания в виде строки внутри итератора, и оно печатает все имя здания (то есть "Дом")

Но когда я вызываю LogAction, имя здания будет печататься только как символ и будет показывать только один случайный символ.

Как я могу преобразовать имя в структуре в строку или иначе заставить его напечатать как целое слово вне итератора?

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

-Лось

0 ответов

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