繁体   English   中英

C ++多维数组不会初始化

[英]c++ Multidimensional array wont initialize

我一直在努力使它正常工作。 但是,我似乎无法弄清楚。 我正在尝试使游戏板正确初始化,但是它一直说<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

您可以在此处阅读有关变量类型的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM