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 :
et puis une classe qui utilise ma classe Array ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 j'ai aussi une classe Arduino qui hérite de Device
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?? }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager