Undefined reference to... Incompréhensible.

AnTrqx Messages postés 5 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 29 mai 2011 - 28 mai 2011 à 23:08
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 30 mai 2011 à 10:04
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

AnTrqx Messages postés 5 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 29 mai 2011
28 mai 2011 à 23:11
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 */
0
AnTrqx Messages postés 5 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 29 mai 2011
28 mai 2011 à 23:28
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.
0
AnTrqx Messages postés 5 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 29 mai 2011
28 mai 2011 à 23:32
Ok donc en fait, non, rien n'est résolu, j'ai parlé trop vite. Ca me fait toujours exactement la même chose...
0
AnTrqx Messages postés 5 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 29 mai 2011
29 mai 2011 à 00:36
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 :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
30 mai 2011 à 10:04
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...
0
Rejoignez-nous