von generischer Klasse auf Methoden einer anderen generischen Klasse zugreifen
-
ich möchte zum Beispiel ein Objekt von der Klasse List anlegen.
bspw: List<int>* l = new List<int>();und nun möchte ich noch eine Methoden in die Klasse "List" implementieren wo ich zum Beispiel ein Element zwischen 2 bestehenden Elementen einfüge.
ich nenn die Methode mal "before(...)". nun rufe cih die Methode auf mit l->before(...) und wenn die Methode die Zeiger umbiegen will so dass das neue Element zwischen 2 bestehenden steht, so kann ich aber nicht mit dem Methoden der Klasse listeElement arbeiten da ich ja auf diese keinen zugriff hab und ich ein element der klasse "List" habe...
ein bischen verwirrend aber ich hoffe du verstehst mich jetzt
-
ich muss noch mal ergänzen.....
natürlich leg ich das neue Objekt dann mit
List<int> l an und verwende dann die l.before(...)
Also kein Zeiger
-
Deine Methode before sollte doch ein slistElement zurückgeben. Und dann kannst du mit der getNext Methode das nächste holen und die Zeiger entsprechend anpassen, dass du etwas einfügen kannst.
Im übrigen rate ich dir das jetzt nur zu Testzwecken zu machen und wenn du die Liste wirklich benutzen willst die aus der Standardbibliothek nutzt.
-
ja das ist auch nur zu test zwecken..............
Danke, ich stehe aber immer noch irgendwie auf den schklauch.....werd mir den code noch mal angucken und noch mal probieren....wenn nich dann weiß ich ja wo ich was posten muss

gruß
-
ich hab mir das gerade noch mal angeschaut was ich da gemacht habe und die methode before gibt nichts zurück das ist ne void......
Ich wollte nur das listElement welches ich einfügen will und dass wo es davor soll übergeben und die bracuh ja dann nichts zurückliefern.........
-
Dann solltest du die Funktion aber anders benennen.
Wenn du das Element hast, welches direkt zuvor sein soll, dann hast du doch alles beisammen um dort etwas einzufügen?Zeig mal ein wenig Code was genau nicht klappt.
-
oder ich hab jetzt noch nen anderes beispiel wo es vllt. deutlicher wird.
Ich lege ien Objekt an mit List<int> l. Nun fülle ich die Liste mit der Funktion welche in der Klasse List vorkommt.l.insert(12); l.insert(15); ...wobei der Parameter der übergeben wird der data teil ist.
Und nun möchte ich in meiner *cpp datei die ganze Liste ausgeben.
mitfor(l.begin(); !l.end() ;l.getNext();) cout<<l.getData();So und die funktionen welche den nächsten zeiger(getNext()) holen bzw. welche mir den data(getData()) teil lieferen die gibts ja nicht in der klasse List.
Sondern nur in der Klasse listElement.
Vielleciht jetzt ein bischen klarer
-
WINFO2105 schrieb:
for(l.begin(); !l.end() ;l.getNext();)Was auch immer hier genau getan wird, gut sieht es nicht aus (selbst wenn der Code kompilierte). Schau dir mal an, wie Iteratoren funktionieren, und wende das Konzept an.
Vom Benutzer eingesetzte Iteratoren gehören in C++ nie zum Zustand der Containerklasse. Der Benutzer hat sie immer selbst als Objekte.
-
Wenn du das so machen willst muss deine Klasse List mal einen Zeiger auf ein Element halten. Und von da an kannst du dann das durchiterieren machen.
Wenn du kein Iterator Konzept hast, wie es die STL hat, dann wäre es einfacher die ganze Struktur lediglich mit Elementen darzustellen. Dann kannst du auch so durchiterieren. Das ist aber eher C Style, als C++.
-
ich muss mir das jetzt alles nochmal zu Gemüte führen.......trotzdem erstmal danke wenn ich noch fragen habe meld ich mich...
gruß
-
Und vergiss Java dabei bitte.