初始化多维数组
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,它不需要。
【讨论】:
以上是关于初始化多维数组的主要内容,如果未能解决你的问题,请参考以下文章