1

好的,所以我遇到了一个问题,即没有将状态添加到我设置的二维数组(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 类中使用所有这些函数进行初始化。

编辑2:

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 函数,我不确定其他函数是否存在任何问题。

4

2 回答 2

2
allStates[row][col].get_name()

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

于 2012-04-29T19:45:23.777 回答
1

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

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

当使用流作为条件时,它将为您检查流并返回 bool 并获取您尝试获取的值。它同时充当 .eof() && .good()。这也是避免意外将 '\n' 读入数组、列表等的好方法。

于 2012-04-29T19:37:15.917 回答