heren/dames,
Ik heb het volgende:
De klasse Address. Dit is een template klasse zodat ik kan aangeven welke type lijst de klasse Address moet bevatten.
Ik kan dus in main dit doen:
Nu mijn probleem:
Ik heb de klasse Model gemaakt:
De bedoeling hier is dat er een lijstje wordt gemaakt van adressen, ongeacht wat voor een type lijst een adres met zich meedraagt.
Echter de compiler is het niet eens met deze code.
Ik krijg (oa) de volgende errors:
Wat ik er uit op maak is dat het type Address wat ik mee geef aan de list niet specifiek genoeg is. Zou het dan zo moeten zijn dat ik meegeef wat voor een type lijstje (SinglePointInfo) er in Address zit? Dit is niet wat ik wil, zoals gezegd moet er een lijst bijgehouden worden van adressen ongeacht wat voor een type lijst ieder adres bevat.
Ik doe dit allemaal voor mijn studie. Dit is onderdeel van mijn stageopdracht maar mijn begeleider heeft helaas geen kaas gegeten van templates. En school heb ik zo 123 ook niet even bij de hand.
Ik hoop dat eventuele antwoorden of duwtjes in de rug niet al te ingewikkeld worden want ik ben nog beginnend programmeur
Ik heb het volgende:
De klasse Address. Dit is een template klasse zodat ik kan aangeven welke type lijst de klasse Address moet bevatten.
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
32
33
34
35
36
| #pragma once #include <string> #include <list> template<typename T> class Address { private: std::string dKksCode; unsigned dAddress; std::list<T> dValueList; public: //Constructor Address(std::string pInput = " ", unsigned pNameAddress = 0) :dKksCode(pInput), dAddress(pNameAddress) {} //Destructor ~Address() {} //Getter for variable type T* GetTypeValue() { T* lVal = 0; if(dValueList.empty()== false) lVal = &dValueList.front(); return lVal; } void AddObject(T newObject) { dValueList.push_front(newObject); } }; |
Ik kan dus in main dit doen:
C++:
1
2
| Address<SinglePointInfo> spi("schakelaar 0", 00000); \\SinglePointInfo is een klasse Address<DoublePointInfo> dpi("schakelaar 1",67890); \\DoublePointInfo heeft paar andere attributen dan SinglePointInfo |
Nu mijn probleem:
Ik heb de klasse Model gemaakt:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #pragma once #include <list> #include "address.h" class Model { private: std::list<Address> AddressList; public: Model(void) {} ~Model(void) {} void AddItem(Address item) { AddressList.push_front(item); } }; |
De bedoeling hier is dat er een lijstje wordt gemaakt van adressen, ongeacht wat voor een type lijst een adres met zich meedraagt.
Echter de compiler is het niet eens met deze code.
Ik krijg (oa) de volgende errors:
code:
1
2
| model.h(8) : error C3203: 'Address' : unspecialized class template can't be used as a template argument for template parameter '_Ty', expected a real type model.h(8) : error C2955: 'Address' : use of class template requires template argument list |
Wat ik er uit op maak is dat het type Address wat ik mee geef aan de list niet specifiek genoeg is. Zou het dan zo moeten zijn dat ik meegeef wat voor een type lijstje (SinglePointInfo) er in Address zit? Dit is niet wat ik wil, zoals gezegd moet er een lijst bijgehouden worden van adressen ongeacht wat voor een type lijst ieder adres bevat.
Ik doe dit allemaal voor mijn studie. Dit is onderdeel van mijn stageopdracht maar mijn begeleider heeft helaas geen kaas gegeten van templates. En school heb ik zo 123 ook niet even bij de hand.
Ik hoop dat eventuele antwoorden of duwtjes in de rug niet al te ingewikkeld worden want ik ben nog beginnend programmeur