好吧,所以我遇到了一个问题,即状态没有被添加到我设置的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函数,我不确定其他函数是否存在任何问题。
答案 0 :(得分:2)
allStates[row][col].get_name()
您是否重视初始化allState?否则,我怀疑2d数组中没有对象
答案 1 :(得分:1)
虽然我希望看到有关allstate的更多信息,但我可以给你另一个你可能会或可能不会喜欢的提示。
while(infile >> command) {
//code
}
当使用流作为条件时,它将为您检查流并返回bool以及获取您尝试抓取的值。它同时充当.eof()&amp;&amp; 。好()。这也是避免偶然在'\ n'中读入数组,列表等的好方法。