Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » problem mit eigenem list container

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.11.2006, 19:36 Uhr
BoBtheREapER
kein job für nen BoB


ich versuche im moment eine verkette liste oder besser ein deque selbst zu implementieren aber irgendwie habe ich dabei ein problem. Ich habe ne Element struktur:

C++:
struct element
{
  element()    {   next = 0;   prev = 0;};
  element* next;
  element* prev;
  T content;
};//element



und in der liste einen zeiger auf das root und auf das letzte element.

C++:
element *last;
element *first;



dann habe ich die funktion begin die einen iterator der auf den beginn der liste zeiggt zurückgeben soll:

C++:
iterator begin()
{
  return iterator(first);
};



und meine iterator klasse

C++:
class iterator
{
  public:
    iterator(element &con):current(con)  {};
    iterator(): current(0)  {};
    iterator(iterator &ito): current((*ito))  {};
  private:
    element current;
};//iterator



wenn ich nun die beginn funktion aufrufe bekomme ich folgene fehlermeldung:

Code:
error: no matching function for call to ‘blue_xenon::bx_list<...>::iterator::iterator(blue_xenon::bx_list<...>::element*&)’
note: candidates are: blue_xenon::bx_list<T>::iterator::iterator(blue_xenon::bx_list<T>::iterator&)
blue_xenon::bx_list<T>::iterator::iterator()
blue_xenon::bx_list<T>::iterator::iterator(blue_xenon::bx_list<T>::element&)


--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.11.2006, 10:54 Uhr
Th



Referenz und Pointer sind zwei verschiedene Dinge!
Du übergibst einen Pointer, aber der iterator verlangt eine Referenz -> entscheide dich!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.12.2006, 19:45 Uhr
BoBtheREapER
kein job für nen BoB


So wirklich habe ich das mit meiner Liste noch nicht hinbekommen. Meine List Klasse sieht folgendermaßen aus:

C++:
class list
public:
class iterator
{
public:
iterator(element *con):current(con)  {};
private:
element *current;
};//iterator
iterator begin()
{
return iterator(first);
};
private:
element *first;
};//list


Wenn ich list::begin() aufrufe bekomme ich folgende fehlermeldungen:

Code:
‘blue_xenon::bx_list<int>::iterator::iterator(blue_xenon::bx_list<int>::iterator)’
note: candidates are: blue_xenon::bx_list<T>::iterator::iterator(blue_xenon::bx_list<T>::iterator&) [with T = int]               blue_xenon::bx_list<T>::iterator::iterator(blue_xenon::bx_list<T>::element*) [with T = int]


--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.12.2006, 11:12 Uhr
Th



Du benötigst noch einen "richtigen" Copy-Konstruktor für iterator:

C++:
iterator(const iterator &ito)


Schmeiß dann am besten den anderen Pseudo-Copy-Konstruktor iterator(iterator &ito) raus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.12.2006, 19:43 Uhr
BoBtheREapER
kein job für nen BoB


danke funktioniert jetzt
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: