Je veux avoir une classe singleton dont l'objet n'est pas créé statiquement. Avec le code suivant, quand j'appelle ChromosomePool::createPool() Je reçois le message d'erreur suivant :
--> ChromosomePool.h:50 : référence non définie à `myga::ChromosomePool::pool' <-->.
Quelqu'un peut-il me dire comment résoudre ce problème ?
class ChromosomePool {
private:
double * array;
const int len;
const int poolSize;
const int chromosomeLength;
static ChromosomePool* pool;
ChromosomePool(int size_of_pool, int length_of_chromosom):
poolSize(size_of_pool) , chromosomeLength(length_of_chromosom),
len(size_of_pool*length_of_chromosom){
array = new double[len];
}
public:
static void createPool(int size_of_pool, int length_of_chromosom) {
if(pool) {
DUMP("pool has already been initialized.");
exit(5);
}
pool = new ChromosomePool(size_of_pool,length_of_chromosom);
}
static void disposePool() {
if( !pool ) {
DUMP("Nothing to dispose");
exit(5);
}
pool ->~ChromosomePool();
pool = NULL;
}
static ChromosomePool* instace() {
if( !pool ) {
DUMP("Using pool before it is initialized");
exit(5);
}
return pool;
}
~ChromosomePool() {
delete[] array;
}
};