Liste
-
ich habe folgendes problem:
ich möchte daten in listen speichern und zwar so, dass jedes listenelement eine variable der klasse test1 entspricht und auf die angrenzenden listenelemente verweist.in etwa so:
class test1 { private: test1 * prev ; test1 * next ; int value1 ; public: test1 * getprev() ; test1 * getnext() ; int getvalue1() ; } ;jetzt möchte ich diese klasse ableiten:
class test2 : public test1 { private: int value2 ; public: int getvalue2() ; } ;und jetzt mein problem: die abgeleitete klasse kommt doch dann nicht mehr mit meinem "listensystem" zurecht oder? weil dieses definiert sich doch aus pointern auf die klasse test1 und nicht test2...
wie bekomm ich es hin, dass test2 ebenfalls in einer liste darstellbar wird ohne die komplette logik neu zu schreiben?
-
spricht etwas gegen std::list? oder willst du lernen, wie man verkette listen programmiert?
-
wie bau ich denn das std::list da ein?

hast du vielleicht ein gutes tutorial dafür?
-
-
vll solltest du erst mal sagen, was du genau machen willst und nicht nur, wie du es dir gedacht hast zu lösen?!
ansonsten würde das wohl nur über casts gehen ^^
bb
-
ich möchte eine systemunabhängige klasse erstellen, die je nach vererbung mit verschiedenen anderen variablen erweitert werden. und dabei möchte ich nicht das listensystem neu definieren...
lassen sich klassen so einfach casten?
ich werds gleich mal probiern
danke euch
-
ich glaube, du brauchst in wirklichkeit templates.
-
daersc schrieb:
und dabei möchte ich nicht das listensystem neu definieren...
Eben dafür kannst du ja auch schon bereits implementierte verkettete Listen wie
std::listverwenden.
daersc schrieb:
lassen sich klassen so einfach casten?
Mit Polymorphie lässt sich da einiges lösen. Also dass sich hinter einem Zeiger auf eine Basisklasse auch ein Objekt der abgeleiteten Klasse verstecken kann (-> virtuelle Funktionen).
-
daersc schrieb:
klasse erstellen, die je nach vererbung mit verschiedenen anderen variablen erweitert werden
Wie meinst du dieses erweitert?
ich nehm mal an so:list0: int list1: int char list2: int double list1u2: int char doubledas löst man in C++ wirklich mit templates:
#include <list> struct bsp_inhalt { int a1; char a2; double a3; }; std::list <bsp_inhalt> list1u2;Ja - die Variablen-Namen sind nicht gerade toll... ^^
Willst du so etwas nur verwenden oder auch selbst schreiben?bb