2016-09-14 162 views
0

我一直在试图让这个工作正常;但是,似乎我无法弄清楚这一点。我试图让游戏板正确初始化,但它一直在说<error reading characters of string>c + +多维数组不会初始化

using namespace std; 

int main() 
{ 

    board show; 
    show.init(); 
    show.printing(); 

} 


class board { 

public: 
    void init(){ 

     string Board[8][9] = { 
      { "C56", "C15", "C21", "C62", "C11", "C62", "C21", "C15", "C56" }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
      { "C56", "C15", "C21", "C62", "C11", "C62", "C21", "C15", "C56" }, 
     }; 
    } 

    void printing(){ 

     string character = "*"; 

     int position[2] = { 2, 2 }; 
     // Draw the grid once 
     for (int i = 0; i < 8; i++){ 
      for (int j = 0; j < 9; j++){ 
       if (i == position[0] && j == position[1]) 
        cout << character; 
       else 
        cout << Board[8][9]; 
       cout << " "; 
      } 
      cout << endl; 
     } 
    } 

private: 
    string Board[8][9]; 
}; 
+2

'COUT <<局[8] [9];'使用两个无效索引。您可能错误地输入了“cout”Board [i] [j];'。 – molbdnilo

回答

2

它是如此简单:你有一半的解决方案: 只需使用for循环中的值复制

void A::init() 
{ 
    string Board[8][9] = { 
     { "C56", "C15", "C21", "C62", "C11", "C62", "C21", "C15", "C56" }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 ", " 0 " }, 
     { "C56", "C15", "C21", "C62", "C11", "C62", "C21", "C15", "C56" }, 
    }; 

    for(int i(0); i < 8; i++) 
    { 
     for(int j(0); j < 9; j++) 
      this->Board[i][j] = Board[i][j];   
    } 
} 
0

init方法创建一个新的,局部变量。您不是指您的实例变量,因此在printing方法中该变量未被初始化。

而不是

string Board[8][9] = // ... initialization code 

你应该写

this->Board = // ... initialization code 

或只是

Board = // ... initialization code 

你可以阅读更多关于变量类型here

+1

使用'this'不是必需的(暗示)。但是如果你打算使用它,它不是一个参考指针。 – Peter

+0

@Peter真的,最近太多Java(; – Jezor

+2

我的哀悼 – Peter