gpt4 book ai didi

c++ - 为什么我尝试在结构内的 vector 内添加到结构内的 vector 会失败?

转载 作者:行者123 更新时间:2023-11-30 01:08:47 25 4
gpt4 key购买 nike

这个问题我有一段时间了,我想就此发表意见。如果你有更好的方法,请告诉我。一切正常,除非我尝试访问它从不执行的实体内的项目的 vector 。总是说它是空的。

struct sObj{
char itemName[64];
int itemStrenght;
};

struct sEnt{
char entityName[64];
vector<sObj> entityItems;
};

class cTemp{
public:
void addEntity(sEnt entity){ entityList.push_back(sEnt); }
void addItemToEnt(char* entityName, sObj itemDetails);
void setAllItemStrenght(char* itemName, int newStr);
private:
vector<sEnt> entityList;
};

void cTemp::addItemToEnt(char* entityName, sObj itemDetails){
for(auto m : entityList){
if(!_stricmp(m.entityName, entityName)){
m.entityItems.push_back(itemDetails);
m.entityItems.push_back(itemDetails); // just for testing
msgBox("Item count: %i", m.entityItems.size()); // is working
}
}
}

void cTemp::setAllItemStrenght(char* itemName, int newStr){
for(auto m : entityList){
msgBox("Item count: %i", m.entityItems.size()); // returns 0
for(auto n : m.entityItems){
// never gets executed
}
}
}

最佳答案

问题在这里:

void cTemp::addItemToEnt(char* entityName, sObj itemDetails){
for(auto m : entityList){

您的循环正在处理从 entryList 复制的值,而不是对它们的引用。你想要:

for(auto& m : entityList){

关于c++ - 为什么我尝试在结构内的 vector 内添加到结构内的 vector 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41433461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com