Online-Skater
Erfahrenes Mitglied
Hallo Tutorianer
ich quäle mich schon seit Tagen durch oben genannte Teilbereiche und habe eine "Generic Class" also die Liste mit Iterator implementiert, nur leider kommen für mich seltsame Fehler.
D:\PROJECTS\C++\Templates\list\list.h:90: error: expected constructor, destructor, or type conversion before "List"
D:\PROJECTS\C++\Templates\list\list.h:155: error: expected constructor, destructor, or type conversion before '&' token
D:\PROJECTS\C++\Templates\list\list.h:164: error: expected constructor, destructor, or type conversion before "List"
D:\PROJECTS\C++\Templates\list\list.h:172: error: expected constructor, destructor, or type conversion before '&' token
D:\PROJECTS\C++\Templates\list\list.h:181: error: expected constructor, destructor, or type conversion before "List"
:: === Build finished: 5 errors, 0 warnings ===
Treten auf z.b. hier:
Ich verstehe die Meldung so das ich einen Konstruktor, Destruktor und/oder Type-Converter brauche(Iterator) aber auch das habe ich "extra" mal reingebaut und immernoch das gleiche, somit muss der Fehler woanders liegen, leider habe ich hier zu wenig Erfahrung.
Ich hoffe ihr findet den Fehlerteufel, ich bin mir fast sicher das es total banal scheint aber das zugehörige Buch meint das es so gehen sollte...
Danke
ich quäle mich schon seit Tagen durch oben genannte Teilbereiche und habe eine "Generic Class" also die Liste mit Iterator implementiert, nur leider kommen für mich seltsame Fehler.
C++:
#include <stdexcept>
template<class T>
class Element {
public:
Element *suc, *pre;
T data;
Element() {}
Element(Element *s, Element *p, T d)
: suc(s), pre(p), data(d) {}
};
template<class T>
class List {
public:
//-----------------------------------------------------------------------------
class Iterator {
public:
Iterator() : the_list(0), cur(0) {}
bool operator== (const Iterator& i) const
{return cur == i.cur;}
bool operator!= (const Iterator& i) const
{return cur != i.cur;}
T& operator* (); // Gives a ref to an actual element
Iterator& operator++ (); // Moves forward
Iterator operator++ (int); // Moves forward
Iterator& operator-- (); // Moves backwards
Iterator operator-- (int); // Moves backwards
private:
friend class List<T>;
List<T> *the_list;
Element<T> *cur;
Iterator(List<T> *l, Element<T> *c)
: the_list(l), cur(c) {}
};
//------------------------------------------------------------------------------
List() : f(new Element<T>), sz(0)
{f->suc = f->pre = f;}
List(List&);
List& operator= (List&);
bool empty() const {return sz==0;}
long int size() const {return sz;}
T& front(); // Gives reference to first element
T& back(); // last element
Iterator begin() {return Iterator(this, f->suc);}
Iterator end() {return Iterator(this, f);}
Iterator insert(Iterator, const T&);
void insert(Iterator, int, const T&);
void insert(Iterator, Iterator, Iterator);
void erase(Iterator);
void erase(Iterator, Iterator);
void push_front(const T& d) {insert(begin(),d);}
void push_back(const T& d) {insert(end(),d);}
void pop_front() {erase(begin());}
void pop_back() {erase(--end());}
~List() {erase(begin(), end()); delete f;}
private:
Element<T> *f;
long int sz;
};
D:\PROJECTS\C++\Templates\list\list.h:155: error: expected constructor, destructor, or type conversion before '&' token
D:\PROJECTS\C++\Templates\list\list.h:164: error: expected constructor, destructor, or type conversion before "List"
D:\PROJECTS\C++\Templates\list\list.h:172: error: expected constructor, destructor, or type conversion before '&' token
D:\PROJECTS\C++\Templates\list\list.h:181: error: expected constructor, destructor, or type conversion before "List"
:: === Build finished: 5 errors, 0 warnings ===
Treten auf z.b. hier:
C++:
template<class T>
List<T>::Iterator List<T>::insert(Iterator pos, const T& d) /// <------- HIER
{
if (pos.the_list != this)
throw std::invalid_argument("List::insert");
Element<T> *pnew = new Element<T>(pos.cur, pos.cur->pre, d);
pos.cur->pre->suc = pnew;
pos.cur->pre = pnew;
sz++;
return List::Iterator(this, pnew);
}
template<class T>
List<T>::Iterator& List<T>::Iterator::operator++ () // UND HIER
{
if (not the_list or *this == the_list->end())
throw std::out_of_range("Iterator::operator++");
cur = cur->suc;
return *this;
}
Ich verstehe die Meldung so das ich einen Konstruktor, Destruktor und/oder Type-Converter brauche(Iterator) aber auch das habe ich "extra" mal reingebaut und immernoch das gleiche, somit muss der Fehler woanders liegen, leider habe ich hier zu wenig Erfahrung.
Ich hoffe ihr findet den Fehlerteufel, ich bin mir fast sicher das es total banal scheint aber das zugehörige Buch meint das es so gehen sollte...
Danke