1
我有這個問題一段時間,我想對此發表意見。如果你有更好的方法,請告訴我。 一切運作良好,除非我嘗試訪問它永遠不會執行的實體內的項目的向量。總是說它是空的。爲什麼我嘗試在struct中的向量內向向量中添加向量會失敗?
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
}
}
}
在哪裏調用'addItemToEnt'?如果矢量是空的,也許是因爲你永遠不會填充它。 –
順便說一下,你應該使用'std :: string' –
我會相應地調用所有東西。上面的代碼只是我的問題的一個例子。不是實際的代碼,因爲我想簡化這篇文章。確切的問題已經由Frank解答。可能是@GuillaumeRacicot。但是直到現在我寫了所有東西的方式都使用char。現在它確實有效。我會接受你的建議並整合它。謝謝。 – GreySkull