Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Eine <map> von einer eigenen Klasse

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.05.2004
    Beiträge
    49

    Eine <map> von einer eigenen Klasse

    Hi,

    ich habe mir eine Klasse Point geschrieben:
    Code:
    #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

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.05.2004
    Beiträge
    49
    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

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    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
    Code:
    std::map<std::string, int> foo;
    foo["Hallo"] = 4;
    foo["Welt"] = 2;
    std:: cout << foo["Hallo"] << foo["Welt"] << std::endl; // gibt 42 aus

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •