2012-04-29 46 views
1

好吧,所以我遇到了一個問題,即狀態沒有被添加到我已經設置的2d數組(allStates)中。以下是正在調用的addState函數的代碼。 allStates是一個10x10數組,在此之前應該是空的。C++運行時問題

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(); 
    } 
} 

任何提示都非常感謝!

編輯:

一個是一種類型的區域,它包含所有的功能,包括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函數首先被調用,我不知道是否有與其他任何問題。

+4

'allStates'聲明在哪裏? 「a」是什麼類的對象?您需要添加更多詳情 – Attila

+0

正如Atilla所說,請解釋一下。它是一個C數組,一個std :: verctor等? – chameco

+0

編輯回答其中一些問題。 – user1332364

回答

1

雖然我希望能看到更多關於allstate的信息,但我可以給你另一個提示,你可能會也可能不會喜歡。

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

當使用流作爲條件,它將檢查流爲您和布爾以及返回的抓住你試圖搶值。它充當.eof()& & .good()。這也是避免在'\ n'中偶然讀入數組,列表等的好方法。

+0

非常感謝,我將編輯添加所有狀態的初始化[] [] – user1332364

+0

我可以建議的唯一事情是測試是否實際上進入該if語句。我從來沒有使用多個方法調用沒有parens,也沒有empty(),雖然在大多數情況下沒有錯。 – Rhomnousia

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

您是否重新初始化allState?否則,我懷疑在二維數組中沒有對象

+0

我該怎麼做呢? – user1332364

+0

但是,我會怎麼做一個對象呢?我會創建一個對象來分配給整個數組嗎? – user1332364

+0

你能發表更多關於國家的信息嗎?這是一堂課嗎?或者你typedef它? – SDEZero