PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine <map> von einer eigenen Klasse



pfefferkeks
04-12-2005, 08:52
Hi,

ich habe mir eine Klasse Point geschrieben:


#pragma once

class Point {
private:
float xyz[3];

public:
Point();
Point(float, float, float);

float* Point::getPoint3fv();
void PointPrint(void);

float getX();
float getY();
float getZ();

void setX(float);
void setY(float);
void setZ(float);
};


Jetzt brauche ich eine <map> in der ich genau Objecte von dieser Klasse ablegen kann. Aber Ihrgent wie bekomme ich das nicht auf die Reihe.

Ich includiere <map> und dann versuche ich so was hier:
map<Point*>* allPoints = new map<Point*>();

Ist das ueberhaupt moeglich? Oder ist mein ansatz schon ganz verkehrt?

Danke pfefferkeks

peschmae
04-12-2005, 09:05
Du willst doch ne Map. Also musst du wohl oder übel beim Konstruktor auch zwei Typen angeben (und eventuell noch eine Sortieroperation, falls du den Operator < nicht schon richtig definiert hast) - das ist ja der Trick bei der Map. Oder willst du etwa eigentlich gar keine Map?

MfG Peschmä

pfefferkeks
04-12-2005, 09:16
Also,

im lauf des Programmes lesse ich eine Datei aus. In der eben ganu diese Punkt Objecte stehen. Jetzt muss ich diese PunktObjekte ihrgentwie Speichern. Array fehlt weg da ich nicht weiss vieviehle Punkte in dieser Datei sind. Somit dachte ich an eine Map damit ich auch weiss ob es der erste, der siebte oder eben der x Punkt ist.
Ich wollte nicht meine Klasse Punkt verketten sondern von dieser beliebigt instanzen speichern. Da diese Klasse auch noch an anderen Punkten im Programm benoetigt wird.

Ich hoffe ich habe mich verstaendlich ausgedrueckt!

Danke euch pfefferkeks

peschmae
04-12-2005, 10:10
Also eigentlich willst du ein Array von beliebiger d.h. zur Laufzeit bestimmbarer Länge? Dann solltest du wohl am besten std::vector nehmen.

MfG Peschmä

Joghurt
04-12-2005, 14:53
Wie peschmae schon sagte verwechselst du vector und map.
Ein vector speichert beliebig viele Elemente, die du dann einfach wie ein array ansprechen kannst.
Eine map ist, wie der Name schon sagt, eine Abbildung, die zu einem Schlüssel ggf. einen entsprechenden Wert zurückgibt, also eine Art Datenbank.
z.B. wenn du eine map<std::string, int> definierst, kannst du folgendes schreiben
std::map<std::string, int> foo;
foo["Hallo"] = 4;
foo["Welt"] = 2;
std:: cout << foo["Hallo"] << foo["Welt"] << std::endl; // gibt 42 aus