template will nicht kompilieren
-
Hallo
Ich hab mir gerade eine Template-class geschrieben, aber der Compiler spuckt ganz oft diese beiden fehler aus:
error: expected constructor, destructor, or type conversion before ‘&’ token
error: expected constructor, destructor, or type conversion before ‘refQueue’Hier noch zwei von den betroffnen Funktionen:
template<typename T> refQueue<T>::iterator &refQueue<T>::iterator::operator--() { iterator temp(*this); decRefCount(); mnode=mnode->mprev; incRefCount(); return *this; } template<typename T> refQueue<T>::iterator refQueue<T>::begin() { return iterator(&mbegin); }
(Falls irgenjemand mehr van dem code sehen will kann ich ihn ja noch posten.)
Danke!
-
Du hast die Funktionsdefinitionen nicht zufällig in der Sourcedatei?
/Edit:
Lösung ist Badestrands beitragfolgender Code funktioniert bei mir:
template<typename TA> class refq { typedef TA* iterator; int x; public: iterator &operator--(); }; template <typename TA> typename refq<TA>::iterator &refq<TA>::operator--() { --x; }
-
Probier doch mal, ein "typename" reinzuschmuggeln, so in etwa:
template<typename T> typename refQueue<T>::iterator &refQueue<T>::iterator::operator--()
-
ja.
Die Funktionen sind in einer Sourcedatei definiert.
Die Template-Klasse hab ich in in einem Header, den ich mit #include"refqueue.h"
included habe.
Der sieht etwa so aus:template<typename T> class refQueue { struct node {/* ... */}; public: class iterator { /* ... */}; /* ein paar funktionen... */ };
-
yrch schrieb:
ja.
Die Funktionen sind in einer Sourcedatei definiert.
Die Template-Klasse hab ich in in einem Header, den ich mit #include"refqueue.h"
included habe.sämtliche Templatedefinitionen müssen in den Header.
-
Badestrand schrieb:
Probier doch mal, ein "typename" reinzuschmuggeln, so in etwa:
template<typename T> typename refQueue<T>::iterator &refQueue<T>::iterator::operator--()
Danke! das wars!!!