c ++运行时问题

时间:2012-04-29 19:16:14

标签: c++ runtime-error

好吧,所以我遇到了一个问题,即状态没有被添加到我设置的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 个答案:

答案 0 :(得分:2)

allStates[row][col].get_name()

您是否重视初始化allState?否则,我怀疑2d数组中没有对象

答案 1 :(得分:1)

虽然我希望看到有关allstate的更多信息,但我可以给你另一个你可能会或可能不会喜欢的提示。

while(infile >> command) {
//code
}

当使用流作为条件时,它将为您检查流并返回bool以及获取您尝试抓取的值。它同时充当.eof()&amp;&amp; 。好()。这也是避免偶然在'\ n'中读入数组,列表等的好方法。