Undefined reference to... Incompréhensible.

Signaler
Messages postés
5
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
29 mai 2011
-
Messages postés
14871
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2020
-
Bonsoir,

J'essaie de coder une classe AdvancedArray qui serait un genre de vecteur simplifié. Seulement j'obtiens cette erreur à la compilation. J'ai fait quelques recherches sur Internet, mais aucune des causes/solutions proposées n'a marché.

Je vous poste mon .h et .cpp :

Le .h :
#ifndef GENETICCARD_H
#define	GENETICCARD_H

#include "AdvancedArray.h"

class GeneticCard {
        private :
            AdvancedArray geneticCode;
            AdvancedArray headColor;
            bool gender;

        public :
            GeneticCard();
            GeneticCard(const GeneticCard& fatherCard, const GeneticCard& motherCard);
            GeneticCard(unsigned int nbSpeedBricks, unsigned int numSpeedBrick);
           
            AdvancedArray getGeneticCode() const;
            AdvancedArray getHeadColor() const;
}; 

#endif


Le .cpp :
#include 

#include <cstdlib>
#include <ostream>

#include "AdvancedArray.h"

template <typename T>
AdvancedArray<T>::AdvancedArray() {
}

template <typename T>
AdvancedArray<T>::AdvancedArray(unsigned int aLength):length(aLength) {
    this->data = (T*) malloc(length*sizeof(T));
    for (int i=0; i<length; i++) {
        data[i] = NULL;
    }
}

template <typename T>
AdvancedArray<T>::~AdvancedArray() {
}

template <typename T>
unsigned int AdvancedArray<T>::getLength() const {
    return length;
}

template <typename T>
void AdvancedArray<T>::operator=(AdvancedArray<T> aAdvancedArray) {
    length = aAdvancedArray.getLength();
    for (int i=0; i
T& AdvancedArray<T>::operator[](unsigned int i) {
    if(i >= length()) {
        throw;
    }

    return data[i];
}


J'ai donc des undefined references sur toutes les méthodes de mon AdvancedArray. Et je ne comprends pas d'où ça pourrait venir.

Si vous avez des idées n'hésitez pas,

Merci d'avance,

Antrqx.

5 réponses

Messages postés
5
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
29 mai 2011

Oups... Ca commence bien, je me suis planté de .h...

Voilà le bon :
#ifndef ADVANCEDARRAY_H
#define	ADVANCEDARRAY_H

#include 

#include <cstdlib>
#include <ostream>

template <typename T>
class AdvancedArray {
    protected:
        unsigned int length;
        T* data;
        
    public:
        AdvancedArray();
        AdvancedArray(unsigned int aLength);
        ~AdvancedArray();

        unsigned int getLength() const;
        T& operator[](unsigned int i);
        void operator=(AdvancedArray<T> aAdvancedArray);
};

#endif	/* ADVANCEDARRAY_H */
Messages postés
5
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
29 mai 2011

Ok, problème résolu...

C'était encore le coup de l'erreur fantôme. Le makefile devait être erroné parce qu'en copiant toutes mes classes dans un nouveau projet, tout marche impec.

Bonne soirée.
Messages postés
5
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
29 mai 2011

Ok donc en fait, non, rien n'est résolu, j'ai parlé trop vite. Ca me fait toujours exactement la même chose...
Messages postés
5
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
29 mai 2011

Mon Dieu je suis affligeant...

Je viens de me rappeler quand quand on définit un template, toutes les méthodes ont besoin de connaître le Type doivent être mis dans le .h...

Problème résolu ! Après quelques heures de galère.

Désolé du post inutile du coup :)
Messages postés
14871
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2020
93
Yop!
J'interviens un peu tard...mais pourquoi tu n'utilises pas la classe vector tout simplement?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...