У меня возникла эта проблема на некоторое время, и мне хотелось бы на это высказать мнение. Если у вас есть лучший способ сделать это, скажите мне. Все работает хорошо, за исключением случаев, когда я пытаюсь получить доступ к вектору для элементов внутри объекта, который он никогда не выполняет. Всегда говорит, что он пуст.Почему моя попытка добавить к вектору внутри структуры внутри вектора внутри структуры сбой?
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' –
. Я все правильно звоню. Вышеприведенный код является лишь примером моей проблемы. Не настоящий код, так как я хотел сделать это коротко для сообщения. Фрэнк ответил на точную проблему. И @GuillaumeRacicot, возможно. Но так, как я писал все до сих пор, использует char. И теперь это работает. Я возьму ваш совет и интегрирую его. Спасибо. – GreySkull