Я новичок в 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, имя здания будет печататься только как символ и будет показывать только один случайный символ.
Как я могу преобразовать имя в структуре в строку или иначе заставить его напечатать как целое слово вне итератора?
Пожалуйста, дайте мне знать, если мой вопрос неопределенный или шаткий, и я сделаю все возможное, чтобы убрать его.
-лось
Задача ещё не решена.
Других решений пока нет …