0

我是 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

}

所以基本上,我可以将建筑物名称打印为迭代器内的字符串,它会打印整个建筑物名称(即“房子”)

但是当我调用 LogAction 时,建筑物名称只会打印为一个字符,并且只会显示一个随机符号。

如何将结构中的名称转换为字符串或以其他方式将其作为整个单词打印在迭代器之外?

如果我的问题含糊不清或不稳定,请告诉我,我会尽力清理它。

-驼鹿

4

0 回答 0