开发者

Initializing multidimensional arrays

开发者 https://www.devze.com 2023-01-29 06:55 出处:网络
When ever I try to initialize a multidimensional array I get the following error: (20) : error C2059: syntax error : \'{\'

When ever I try to initialize a multidimensional array I get the following error:

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

This is my code:

/*
 *      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 dis开发者_JS百科pBoard();
};

#endif


You cannot initialize a class variables (except for statics). There are other questions about that which explain the reasoning in detail, but just really quick - it would result in the compiler creating code in your constructor, which is against the nature of C++.

Here is a recent question about the same issue: Why is initialization of integer member variable (which is not const static) not allowed in C++?


This was not your only error. Classes are not to be used like that. U need a constructor to set values etc etc.

Try that :

#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

Keep in mind that gcc gave me :

: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

And no I don't know how to fix those 2 warnings. IMHO play with C++ a bit more.


int board[3][3] = {};

I don't know why people insist on writing the 0, it is not needed.

0

精彩评论

暂无评论...
验证码 换一张
取 消