Ik ben een getemplatiseerde class aan het maken met een multimap erin.
De multimap moet een pointer bewaren en het getemplatiseerde type.
dit staat er in de header file:
Nou heb ik een class die erft van de IObserver<T> base class en als template type een void* heeft.
Bij de aanroep van de Attach() functie is als volgd: Attach(this,NULL);
waarom mag dit niet?
Ik heb al een tijdje gegoogled, maar gezien maps en multimaps al templated zijn vind ik hier weinig over.
De multimap moet een pointer bewaren en het getemplatiseerde type.
dit staat er in de header file:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| template <typename T> class CTheSubject { private: typedef std::multimap<IObserver<T>*, T const *> TObsContainer; TObsContainer iObservers; public: //virtual ~CTheSubject(); bool Attach(IObserver<T>* aObserver, T const &d) { std::multimap<char, char>::iterator pos; std::multimap<char, void*>::iterator pos1; std::multimap<char, T>::iterator pos2; // Bovenstaande regel levert de error: // In member function ‘bool CTheSubject<T>::Attach(IObserver<T>*, const T&)’: // error: expected `;' before ‘pos2’ return true }; |
Nou heb ik een class die erft van de IObserver<T> base class en als template type een void* heeft.
Bij de aanroep van de Attach() functie is als volgd: Attach(this,NULL);
waarom mag dit niet?
Ik heb al een tijdje gegoogled, maar gezien maps en multimaps al templated zijn vind ik hier weinig over.
Klus page: http://klusthuis.blogspot.com