我是SO的新手,这看起来非常有帮助。
我的代码被用于cryengine,但这似乎是一个很好的c ++问题。让我们面对现实,官方的CE论坛打击。
我遇到的麻烦是访问范围之外的结构数组的const char *变量,我将这个变量分配给。
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
}
基本上,我可以将建筑物名称打印为迭代器内部的字符串,并打印整个建筑物名称(即#34; House&#34;)
但是当我调用LogAction时,建筑物名称将仅作为字符打印,并且只显示一个随机符号。
如何将struct中的名称转换为字符串,或者将其作为迭代器之外的整个单词进行打印?
如果我的问题模糊或不稳定,请告诉我,我会尽力清理它。
-Moose