初始化多维数组

Posted

技术标签:

【中文标题】初始化多维数组【英文标题】:Initializing multidimensional arrays 【发布时间】:2010-12-04 00:20:06 【问题描述】:

当我尝试时,我收到以下错误:

(20) : error C2059: syntax error : ''

这是我的代码:

/*
 *      Tic-Tac-Toe
 *      Version 1.0
 *      Copyright (C) 2010 lolraccoon. All rights reserved.
*/
#ifndef GAME_H
#define GAME_H

#include <iostream>
using namespace std;

class Game

private:
    /*
     *      0 = NONE
     *      1 = HUMAN
     *      2 = COMPUTER
    */
    int board[3][3] = 0;
    char pieces[3] = ' ','X','O';
public:
    void dispBoard();
;

#endif

【问题讨论】:

我完全想撕掉你的代码,直到我意识到你有版权。该死的。 这与它是一个多维数组无关。您正在尝试初始化一个类变量。不能那样做。看我的回答。 说真的。这是一个合理的问题,有一个简短的代码示例来解释这种情况。当然,对问题的假设是错误的,但这就是他首先问 SO 的原因。来自我的 +1。 【参考方案1】:

您不能初始化类变量(静态变量除外)。还有其他问题可以详细解释推理,但非常快 - 它会导致编译器在你的构造函数中创建代码,这违反了 C++ 的本质。

这是关于同一问题的最新问题:Why is initialization of integer member variable (which is not const static) not allowed in C++?

【讨论】:

【参考方案2】:

这不是您唯一的错误。不能这样使用类。你需要一个构造函数来设置值等。

试试看:

#ifndef GAME_H
#define GAME_H

#include <iostream>
using namespace std;

class Game

 private:
  int board[3][3];
  char pieces[3];
 public:
  void dispBoard();
  Game()
  
   board =  ;
   pieces = ' ','X','O';
  
;

#endif

记住 gcc 给了我:

:21: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
:22: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

不,我不知道如何解决这两个警告。恕我直言,更多地使用 C++。

【讨论】:

【参考方案3】:
int board[3][3] = ;

我不知道为什么人们坚持写 0,它不需要

【讨论】:

以上是关于初始化多维数组的主要内容,如果未能解决你的问题,请参考以下文章

Typescript - 多维数组初始化

初始化多维数组

多维数组

在 Java 中初始化多维数组

多维数组初始化

初始化多维数组