C++ C++;-初始化类上的空数组

C++ C++;-初始化类上的空数组,c++,arrays,C++,Arrays,我在初始化类中的空数组时遇到了一些问题,我称之为空数组。基本上我想用0填充一个2d数组 这是我的密码: Board.cpp #include "Board.h" #include <string> #include <iostream> #include "Player.h" using namespace std; Board::Board() : _board{ { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } } { } void B

我在初始化类中的空数组时遇到了一些问题,我称之为空数组。基本上我想用0填充一个2d数组

这是我的密码:

Board.cpp

#include "Board.h"
#include <string>
#include <iostream>
#include "Player.h"

using namespace std;

Board::Board()
: _board{ { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }
{
}

void Board::drawBoard()
{
    for (int i = 0; i < 4; i++){
        for (int j = 0; j < 4; j++){
            if (i == 0 && j == 0){
                cout << " ";
            }
            else if (i == 0){
                cout << " " << j << " ";
            }
            else if (j == 0){
                cout << i;
            }
            else {
                if (_board[i][j] == 0)
                    cout << "| " << "|";
                else
                    cout << "|" << _board[i][j] << "|";
            }
        }
        cout << endl;
    }
}

void Board::playerInput(char input)
{
}
#包括“Board.h”
#包括
#包括
#包括“Player.h”
使用名称空间std;
Board::Board()
:_board{{0,0,0},{0,0,0},{0,0,0}
{
}
空板::抽板()
{
对于(int i=0;i<4;i++){
对于(int j=0;j<4;j++){
如果(i==0&&j==0){

cout根据编译器的不同,您应该能够做到这一点(注意使用括号而不是括号):

参考:


看起来您正在使用VS2013。看起来VS2013支持它。参考:

根据您的编译器,您应该能够做到这一点(注意使用括号而不是括号):

参考:


看起来您正在使用VS2013。看起来VS2013支持它。参考:

根据您的编译器,您应该能够做到这一点(注意使用括号而不是括号):

参考:


看起来您正在使用VS2013。看起来VS2013支持它。参考:

根据您的编译器,您应该能够做到这一点(注意使用括号而不是括号):

参考:

看起来您正在使用VS2013。看起来VS2013支持它。Ref:

您需要做的就是初始化数据成员的值:

Board::Board() : _board() {}
这将对
\u board
的所有元素进行零初始化,也适用于C++03。

只需对数据成员进行值初始化:

Board::Board() : _board() {}
这将对
\u board
的所有元素进行零初始化,也适用于C++03。

只需对数据成员进行值初始化:

Board::Board() : _board() {}
这将对
\u board
的所有元素进行零初始化,也适用于C++03。

只需对数据成员进行值初始化:

Board::Board() : _board() {}

这将零初始化
\u board
的所有元素,也适用于C++03。

juanchopanza使用的方法是C++11设置的当前值 但是,我建议做一些小的修改。如果默认构造函数所做的只是初始化数组,那么我会在头文件中初始化它

#pragma once
#include <string>
#include <iostream>

class Board
{
public:
    Board()=default; //becomes compiler constructed 
    void drawBoard();
    void playerInput(char input);


private:
    char _board[3][3]{};//added {} here
    char _input;
};

juanchopanza使用的方法是c++11当前设置的方法 但是,我建议做一些小的修改。如果默认构造函数所做的只是初始化数组,那么我会在头文件中初始化它

#pragma once
#include <string>
#include <iostream>

class Board
{
public:
    Board()=default; //becomes compiler constructed 
    void drawBoard();
    void playerInput(char input);


private:
    char _board[3][3]{};//added {} here
    char _input;
};

juanchopanza使用的方法是c++11当前设置的方法 但是,我建议做一些小的修改。如果默认构造函数所做的只是初始化数组,那么我会在头文件中初始化它

#pragma once
#include <string>
#include <iostream>

class Board
{
public:
    Board()=default; //becomes compiler constructed 
    void drawBoard();
    void playerInput(char input);


private:
    char _board[3][3]{};//added {} here
    char _input;
};

juanchopanza使用的方法是c++11当前设置的方法 但是,我建议做一些小的修改。如果默认构造函数所做的只是初始化数组,那么我会在头文件中初始化它

#pragma once
#include <string>
#include <iostream>

class Board
{
public:
    Board()=default; //becomes compiler constructed 
    void drawBoard();
    void playerInput(char input);


private:
    char _board[3][3]{};//added {} here
    char _input;
};


您遇到了什么样的问题?请解释问题。我遇到了以下错误:“错误2错误C2536:'Board::Board::\U Board”:无法为数组指定显式初始值设定项c:\users\RLNGSTRDRRGNTR\documents\visual studio 2013\projects\project1\project1\Board.cpp 10 1 project1”它仍然给我错误:“错误:需要声明”。请注意,您正在访问超出边界的数组。您的循环循环次数过多。您遇到了什么问题?请解释问题。我遇到了以下错误:“错误2错误C2536:'Board::Board::_Board':无法为数组指定显式初始值设定项c:\users\RLNGSTRDRRGNTR\documents\visual studio 2013\projects\project1\project1\Board.cpp 10 1 project1”它仍然给我错误:“错误:需要声明“。请注意,您正在访问超出范围的数组。您的循环循环次数过多。您遇到了什么样的问题?请解释问题。我遇到了以下错误:“错误2错误C2536:'Board::Board::_Board':无法为数组指定显式初始值设定项c:\users\RLNGSTRDRRGNTR\documents\visual studio 2013\projects\project1\project1\Board.cpp 10 1 project1”它仍然给我错误:“错误:需要声明“。请注意,您正在访问超出范围的数组。您的循环循环次数过多。您遇到了什么样的问题?请解释问题。我遇到了以下错误:“错误2错误C2536:'Board::Board::_Board':无法为数组指定显式初始值设定项c:\users\RLNGSTRDRRGNTR\documents\visual studio 2013\projects\project1\project1\Board.cpp 10 1 project1”它仍然给我错误:“错误:需要声明“。请注意,您正在访问超出范围的数组。您的循环循环次数过多。是的,我使用的是vs2013,它会给我带来4个错误:错误1错误C2536:'Board::Board::Board':无法为数组指定显式初始值设定项2 IntelliSense:仅允许“()”作为数组成员“Board:Board”的初始值设定项。”3 IntelliSense:应为“;”项目1 4 IntelliSense:应为声明Yes我正在使用vs2013它给我4个错误:错误1错误C2536:“Board::Board::Board”:无法为数组指定显式初始值设定项2 IntelliSense:仅允许“()”作为数组成员“Board:Board”的初始值设定项3 IntelliSense:应为“;”项目1 4 IntelliSense:应为声明Yes我正在使用vs2013它给我4个错误:错误1错误C2536:“Board::Board::Board”:无法为数组指定显式初始值设定项2 IntelliSense:仅允许“()”作为数组成员“Board:Board”的初始值设定项3 IntelliSense:应为“;”项目1 4 IntelliSense:应为声明Yes我正在使用vs2013它给我4个错误:错误1错误C2536:“Board::Board::Board”:无法为数组指定显式初始值设定项2 IntelliSense:仅允许“()”作为数组成员“Board:Board”的初始值设定项3 IntelliSense:应该是一个“;”项目1 4 IntelliSense:应该是一个声明+1,这实际上是个好主意(但我怀疑OP的编译器支持这一点。)OP的代码和juan的代码都初始化了