0 votes

créer une classe singleton dont le constructeur accepte des arguments qui sont évalués à l'exécution.

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;
    }

};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X