Hallo,
Ik was gisteren wat aan't prutz0ren met templates in de voor mij nieuwe taal C++.
Na veel turorials gelezen te hebben ben ik begonnen met het maken van een dynamische lijst (wat in STL "vector" heet).
Ik heb dus eerst een basis klasse geschreven om te kijken of mijn gedachte over templates klopte:
list.h
list.cpp
main.cpp
Maar als ik het geheel nu compileer onder Visual Studio 6 dan krijg ik errors bij het linken:
Ik snap niet hoe dit komt, want als ik de methoden in list.h definieer (zie onder) dan werkt alles wel
Heeft iemand enig idee wat ik fout doe ?
Alvast Bedankt !
Ik was gisteren wat aan't prutz0ren met templates in de voor mij nieuwe taal C++.
Na veel turorials gelezen te hebben ben ik begonnen met het maken van een dynamische lijst (wat in STL "vector" heet).
Ik heb dus eerst een basis klasse geschreven om te kijken of mijn gedachte over templates klopte:
list.h
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| #ifndef __LIST_H__ #define __LIST_H__ template <class T> class List { public: List(); ~List(); void blaat(); }; #endif /* __LIST_H__ */ |
list.cpp
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #include <list.h> #include <messages.h> template class <T> List<T>::List() { // constructor } template class <T> List<T>::~List() { // destructor } template class <T> void List<T>::blaat() { info("blaat\n"); } |
main.cpp
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include <list.h> #include <messages.h> int main(int argc, char **argv) { List<int> bla; init_message_system(); bla.blaat(); destroy_message_system(); } |
Maar als ik het geheel nu compileer onder Visual Studio 6 dan krijg ik errors bij het linken:
code:
1
| main.obj : error LNK2001: unresolved external symbol "public: __thiscall List<int>::List<int> (void) ..... |
Ik snap niet hoe dit komt, want als ik de methoden in list.h definieer (zie onder) dan werkt alles wel
C++:
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
| #ifndef __LIST_H__ #define __LIST_H__ template <class T> class List { public: List(); ~List(); void blaat(); }; template class <T> List<T>::List() { // constructor } template class <T> List<T>::~List() { // destructor } template class <T> void List<T>::blaat() { info("blaat\n"); } #endif /* __LIST_H__ */ |
Heeft iemand enig idee wat ik fout doe ?
Alvast Bedankt !
offtopic:
C++ is nieuw voor mij, maar C ken ik wel
C++ is nieuw voor mij, maar C ken ik wel