[linker error] undefined reference
Bonjour à tous, je fait appel à votre expérience afin de m'aider à corriger un problème dans un programme c++ .
le problème c'est que je reçois le message ci dessous et ne comprend pourquoi :( :
[linker error] undefined reference 'Game::singleton'
[linker error] undefined reference 'Game::singleton'
[linker error] undefined reference 'Game::singleton'
voici le code si vous voulez y jeter un coup d'oeil:
//fichier Game.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#ifndef H_Game
#define H_Game
using namespace std;
#include <vector>
#include <iostream>
#include <stdexcept>
#include "Slot.h"
#include "types.h"
//singleton class
class Game{
vector<column> grid;
bool humain;
Pawn humainPawn;
//pointer to singleton
static Game* singleton;
Game(){}
Game(const Game &);
~Game(){delete singleton;}
void operator=(const Game &);
public:
//setters and getters
inline bool isHumain(){return humain;}
inline Pawn getHumainPawn(){return humainPawn;}
inline void setHumain(bool h){humain = h;}
inline void setHumainPawn(Pawn hp){humainPawn = hp;}
static Game* getInstance(){
if(singleton == NULL){'
singleton = new Game;
}
return singleton;
}
ostream& operator<< (vector<column> grid); //fin de page 1
//overrides output stream writer
void init(bool,Pawn&);
//initialises the humain pawn and sets humain turn
bool isFreeColumn(int);
//return true if column in parameter has a free place for a pawn
int getFirstFreeSpot(int);
//return the first free place int column given in parameter
int whoWins();
//return 1 if humain wins, -1 if computer wins, 0 it is draw game
void nextMove()throw (out_of_range&, logic_error&);
};
#endif |
//fichier Game.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include "Game.h"
ostream& operator<<(ostream& out, vector<column> grid){
for(vector<column>::iterator it = grid.begin();it!= grid.end();it++){
column c = *it;
for(vector<Slot>::iterator s = c.begin();s!=c.end();s++){
cout << s->getColor() <<endl;
}
}
}
void init(bool h,Pawn& hp){
Game* game = Game::getInstance();
game->setHumain(h);
game->setHumainPawn(hp);
}
bool isFreeColumn(int){
}
int getFirstFreeSpot(int){
}
int whoWins(){
}
void nextMove()throw (out_of_range&, logic_error&){
} |