 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
free2klim Guest
|
Posted: Fri Jul 21, 2006 9:07 am Post subject: Trouble Declaring 3D Array in Header File |
|
|
Hi,
I am relatively new to programming C++ and I am writing a small program
in which I am using a 3D array of type int. The 3D array is a member
of class GameBoard, which I have defined in the GameBoard.h header file
as follows:
class GameBoard {
//function prototypes
public:
GameBoard();
int getMovePeg();
void readMovePeg();
void readDestPeg();
void makeMove();
bool gameOverCheck();
void endGame();
void displayBoard();
private:
bool peg;
int movePeg, destPeg, jumpPeg, movesTaken, leftPegs;
//HERE IS THE DECLARATION FOR THE ARRAY
int holes[15][5][2];
void initHoles();
string printHole(int);
};
I then
#include "GameBoard.h"
in the GameBoard.cpp file. Then I try to do this with the array:
GameBoard::holes = {{{0,0},{1,3},{2,5},{0,0},{0,0}}, //hole 0
{{0,0},{3,6},{4,8},{0,0},{0,0}}, //hole 1
{{0,0},{4,7},{5,9},{0,0},{0,0}}, //hole 2
{{0,0},{1,0},{4,5},{6,10},{7,12}}, //hole 3
{{0,0},{7,11},{8,13},{0,0},{0,0}}, //hole 4
{{0,0},{2,0},{4,3},{8,12},{9,14}}, //hole 5
{{0,0},{3,1},{7,8},{0,0},{0,0}}, //hole 6
{{0,0},{4,2},{8,9},{0,0},{0,0}}, //hole 7
{{0,0},{4,1},{7,6},{0,0},{0,0}}, //hole 8
{{0,0},{5,2},{8,7},{0,0},{0,0}}, //hole 9
{{0,0},{6,3},{11,12},{0,0},{0,0}}, //hole 10
{{0,0},{7,4},{12,13},{0,0},{0,0}}, //hole 11
{{0,0},{7,3},{8,5},{11,10},{13,14}}, //hole 12
{{0,0},{8,4},{12,11},{0,0},{0,0}}, //hole 13
{{0,0},{9,5},{13,12},{0,0},{0,0}}}; //hole 14
I get this error:
"error C2761: 'int GameBoard::holes[15][5][2]' : member function
redeclaration not allowed"
What am I doing wrong? I have tried everything I could think of to get
this array to work. Thanks in advance for any help that anyone can
offer! If I need to provide any more code or explanation, please let
me know.
Brian |
|
| Back to top |
|
 |
joosteto@gmail.com Guest
|
Posted: Fri Jul 21, 2006 9:10 am Post subject: Re: Trouble Declaring 3D Array in Header File |
|
|
free2klim wrote:
| Quote: | Hi,
y:
int GameBoard::holes = {{{0,0},{1,3},{2,5},{0,0},{0,0}},
|
^I guess you forgot the "int" before the GameBoard there?
| Quote: | "error C2761: 'int GameBoard::holes[15][5][2]' : member function
redeclaration not allowed"
|
g++ often has more insightful error messages:
ref.cc:27: error: `int GameBoard::holes' is not a static member of
`class GameBoard'
Adding static to the declaration within the class (.h), g++ reports:
ref.cc:27: error: conflicting declaration 'int GameBoard::holes'
ref.cc:20: error: 'GameBoard::holes' has a previous declaration as `int
GameBoard::holes[15][5][2]'
So, the types mismatch, we'll have to add the [][][] to the declaration
too.
I ended up with:
class GameBoard{
...
int holes[15][5][2];
};
....
int GameBoard::holes[15][5][2] = {{{0,0},{1,3},{2,5},{0,0},{0,0}},
which compiles. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|