Je veux avoir une classe singleton que son objet n'est pas créé statiquement. ayant le code suivant, quand je l'appelle ChromosomePool :: createPool() je reçois le message d'erreur suivant:créer une classe singleton qui a un constructeur qui accepte les arguments qui sont évalués runtime
-> ChromosomePool.h: 50: undefined reference to `Myga :: ChromosomePool :: piscine » < - -
Quelqu'un peut-il s'il vous plaît me dire comment puis-je résoudre le 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;
}
};
Ensuite, il aurait eu une erreur de lien, mais cela semble être un problème de compilation – Elemental
'undefined reference' est une erreur de lien. –