dynamische objektorientierte datenstruktur
-
danke für die beiden antworten.
mein problem besteht aber weniger im umgang mit vectoren. damit habe ich mich dank der beiden STL-artikel schon beschäftigen können. problematisch und noch weniger erfahren bin ich im aufbau einer neuen klassen mitsamt ihren methoden. darüber würde ich gerne mehr lesen.
DANKE.
STEFAN.
-
Schau doch in ein Tutorial oder ein Buch (du wirst doch eins haben).
z.Bsp.
http://tutorial.schornboeck.net/inhalt.htm
In Kapitel 6 wird unter anderem auch über Klassen geschrieben.
-
OK, dann ein paar Grundlagen:
Eine Klasse besteht aus einzelnen Methoden (davon sind idrR die meisten öffentlich) und Membervariablen (sollten eigentlich privat bleiben). Ein Anwender erstellt ein Objekt dieser Klasse und kann danach auf dessen Methoden zugreifen (die wiederum die Elemente des Objekts lesen oder verändern können).
Z.B. hat die obige Klasse 'line' ein Element namens 'punkte', in dem es die eigenen Bildpunkte verwaltet (ist privat, also nur für die eigenen Methoden sichtbar) und Methoden zum Einfügen, Suchen und Löschen von Punkten (diese greifen auf die Punkteliste zu).
('point' würde wiederum zwei Membervariablen für die Koordinaten und einen Satz Zugriffsmethoden und Vergleichsoperatoren bereitstellen)
-
@CStoll:
danke für die kurze erläuterung. dazu muss ich aber sicher noch mehr lesen, um es richtig anwenden zu können.@Braunstein:
ein buch habe ich schon, aber nur über C, und dass ist ja, soweit ich weis, keine objektorientierte sprache. und vor ort komme ich hier nicht an deutsche bücher ran. darum meine frage nach ein paar guten links. der, denn du mir empfohlen hast, scheint auf den ersten blick auch hilfreich zu sein. danke.STICK.
-
Oben auf dieser Seite gibt es einen Link "Tutorials" und einen "Bücher". Klick da einfach mal drauf.
Viel Spass damit.
PS.
Der Link "für Neulinge" ist auch ganz interessant.
-
HALLO.
ich habe soeben meine ersten versuche mit vectoren und klassen gemacht. leider funktioniert es nicht so, wie ich es mir wünschen würde. der folgende code funktioniert zwar, aber dessen umsetzung finde ich nicht sonderlich gelungen. gibt es bessere lösungen, ohne "resize" und dafür push_back u.a. verwenden zu können?
class point { public: int itsX; int itsY; }; class line { public: vector <point> PKT; void add (int i, int j) { // ... push_back()... ? }; }; int main() { vector <point> TEST; TEST.resize(100); TEST[0].itsX=0; TEST[0].itsY=1; return 0; }DANKE.
STICK.
-
Mit push_back() wird doch der Vector autom. vergrößert, ein resize brauchst du in den seltensten Fällen. Außer du willst mit Resize z.B. 100 Einträge haben. Das was du vielleicht suchst, ist reserve()? Damit kannst du schon mal Speicher vorreservieren.
Obwohl das, was du gemacht hast auch nicht falsch ist.
-
aber wie und wo soll ich denn das push_back() einbringen?
so gehts leider nicht:
TEST[0].push_back(); TEST.push_back();STICK.
-
Erstmal ist es eine gute Idee, der Klasse point einen Konstruktor zu spendieren. Und zweitens mußt du bei push_back() das Objekt mitgeben, das du anlegen willst:
//mit deinen Klassen: point p = {0,1};//ohne Ctor funktioniert die Initialisierungsliste Test.push_back(p); //mit Ctor: class point { public: point(int nx,int ny) : x(nx),y(ny) {} int getx() {return x;} int gety() {return y;} ...//Vergleiche, evt. setx/sety private: int x,y; }; ... vector<point> Test; Test.push_back(point(0,1));//mit Ctor-Aufruf und Temporary
-
Hallo
so gehts leider nicht:
ist keine ausreichende Fehlerbeschreibung.
TEST.push_back(/* neues Element */);Übrigens gibt es hier im Forum schon einen Haufen Threads zum Thema vector...
Zum Beispiel den Magazinartikel.bis bald
akari
-
@CStoll:
ja, ich habe total vergessen das objekt in die klammer zu schreiben. das lag daran, dass ich nicht richtig wusste, welcher art dieses objekt sein soll. dein code scheint auf den ersten blick logisch zu sein. wenn ich am montag wieder an meinem rechner sitze, werde ich das so in mein programm einbauen. danke.ich habe auch gerade gelesen, dass man einen konstruktor und destruktor nicht unbedingt in einer klasse integrieren muss, da C++ einen standardkonstruktor verwendet. in wie weit wuerdest du dem zustimmen?
@Akari:
danke fuer den link, damit bin ich aber leider nicht mehr weiter gekommen, darum habe ich ja meine frage gepostet.gruesse,
STICK.