多维数组不会初始化

c++ Multidimensional array wont initialize

本文关键字:初始化 数组      更新时间:2023-10-16

我一直在努力使这个工作正确;然而,似乎我不能弄清楚这一点。我试图让游戏板正确初始化,但它一直说<error reading characters of string> .

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];
};

这很简单:你有一半的解决方案:只需使用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];        
    }
}

init方法中创建了一个新的局部变量。您没有引用实例变量,因此在printing方法中变量未初始化。

不是

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

你应该写

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

还是

Board = // ... initialization code