Проблемы с C++ во время выполнения
Хорошо, поэтому я столкнулся с проблемой, когда состояние не добавляется в 2d-массив, который я настроил (allStates). Ниже приведен код вызываемой функции addState. allStates - это массив 10x10, который должен быть пустым до этой точки.
void addState(string stateName){
for (int row=0; row<10; row++){
for (int col=0; col<10; col++){
if (allStates[row][col].get_name().empty()){
allStates[row][col].set_values(stateName);
cout << allStates[row][col].get_name();
break;
}
}
}
};
Ниже приведено место в коде, где вызывается функция addState.
while(!infile.eof() && infile.good()){
infile >> command;
cout << command;
if (command == "addState"){
string stateName;
infile >> stateName;
cout << "\n" << stateName;
a.addState(stateName);
cout << a.get_state(stateName).get_name();
}
}
Любые советы с благодарностью!
РЕДАКТИРОВАТЬ:
a является типом Area, который содержит все функции, включая addState, deleteState и тому подобное. Я получал сообщение о том, что я не могу вызывать эти функции без объекта, поэтому я создал переменную, чтобы разрешить это.
allStates инициализируется в классе Area со всеми этими функциями.
EDIT2:
class Area{
State allStates[10][10];
public:
void addState(string stateName){
for (int row=0; row<10; row++){
for (int col=0; col<10; col++){
if (allStates[row][col].get_name().empty()){
allStates[row][col].set_values(stateName);
cout << allStates[row][col].get_name();
break;
}
}
}
};
State get_state(string name){
for (int row=0; row<10; row++){
for (int col=0; col<10; col++){
if (allStates[row][col].get_name() == name)
return allStates[row][col];
}
}
};
void deleteState(string name){
for (int row=0; row<10; row++){
for (int col=0; col<10; col++){
string newest;
newest.clear();
if (allStates[row][col].get_name() == name)
allStates[row][col].set_values(newest);
}
}
};
};
В классе есть еще несколько функций, но так как сначала вызывается функция addState, я не уверен, есть ли какие-либо проблемы с другими.
2 ответа
allStates[row][col].get_name()
Вы ценили инициализацию allState? в противном случае, я сомневаюсь, что в 2d массиве нет объекта
Хотя я надеюсь увидеть больше информации о allstate, я могу дать вам еще один совет, который вам может понравиться или не понравиться.
while(infile >> command) {
//code
}
При использовании потока в качестве условия он проверит поток для вас и вернет bool, а также захватит значение, которое вы пытаетесь получить. Он действует как.eof() && .good(). Это также хороший способ избежать случайного чтения в '\n' массива, списка и т. Д.