Проблемы с 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' массива, списка и т. Д.

Другие вопросы по тегам