classe Array avec template (je ne sais plus où chercher)
Bonjour,
Ca fait bien... bien longtemps que je ne m'étais pas remis au C++ et je me replonge dedans pour un projet perso avec un Arduino :)
Mais voilà, je me prend bien la tête, là mon souci c'est sur les classe "template" où je me suis cassé la tête une bonne partie de l'après midi, je viens chercher un peu d'aide !!! help !
(je ne sais plus où chercher après avoir lu un peu tout sur le net)
Je vous explique, j'ai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
template<typename ItemType>
class Array
{
public:
Array(int maxSize);
~Array();
void add(ItemType& item);
private:
int _size;
int _maxSize;
ItemType* _array;
};
template<typename ItemType>
Array<ItemType>::Array(int maxSize) :
_size(0), _maxSize(maxSize)
{
//_array = new ItemType[_maxSize]; // là, je ne sais pas si c'est Ok ???????
ItemType _array[_maxSize]; /// ou ça ????
}
template<typename ItemType>
Array<ItemType>::~Array()
{
// Dealocate the memory
delete[] _array;
}
// Ajouter un élément la fin
template<typename ItemType>
void Array<ItemType>::add(ItemType& item)
{
_array[_size] = item;
_size++;
} |
et puis une classe qui utilise ma classe Array ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
class Device
{
public:
Device();
//~Device();
protected:
Array<int> _array;
};
Device::Device() {
// ici il faut instancier le _array ??
} |
et j'ai aussi une classe Arduino qui hérite de Device
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class Arduino :
public Device
{
public:
Arduino();
//virtual ~Arduino() {};
};
Arduino::Arduino() : Device() {
//_array.add(0); // ici je veux remplir le _array ... mais ça marche pas !!! :/
} |
Avec ce code j'ai cette erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Arduino : 1.5.7 (Mac OS X), Carte : "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
Device.cpp.o: In function `Device::Device()':
Device.cpp:4: undefined reference to `Array<int>::Array()'
kiserary010002.cpp.o: In function `~Device':
Device.h:8: undefined reference to `Array<int>::~Array()'
collect2: error: ld returned 1 exit status
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences. |