Klasse in Multimap



  • Hallo zusammen

    hätte mal wieder eine frage.
    wie kann ich auf eine methode einer klasse zugreifen,
    die sich in einer multimap befindet??
    pos->second.getIrgendwas(); ??

    gruß elwida



  • std::multimap<Klasse> ClassMMap;
    std::multimap<Klasse>::iterator Bla = ClassMMap.begin();
    Bla->second.Methode();
    


  • dank dir funktioniert

    gruß elwida



  • hi,

    ein kleines beispiel:

    class Blabla
    {
      public:
            Blabla(){}
           ~Blabla(){}
     unsigned long GetANumber();
    };
    //                     KEY        ,  Value , Sortierung
    typdef std::multimap<unsigned long, BlaBla*, std::less < unsigned long > > BlaMap;
    typdef BlaMap::value_type a_bla_value; 
    
    BlaMap BlaMapInst;
    
    Blabla *BlaBlaInst = new Blabla 
    // So kann man was einfügen
    BlaMapInst.insert(a_bla_value(0,BlaBlaInst));
    BlaMapInst.insert(a_bla_value(1,BlaBlaInst));
    BlaMapInst.insert(a_bla_value(2,BlaBlaInst));
    BlaMapInst.insert(a_bla_value(3,BlaBlaInst));
    
    BlaMap::iterator pos = BlaMapInst.begin(); // Setze den Iterator auf das erste Element
    unsigned int aPos;
    aPos = pos->first; // 0 (der Key hat hier den wert 0)
    pos++; // Nächstes Element
    aPos = pos->first; // 1 (der Key hat hier den wert 0)
    pos++; // Nächstes Element
    
    aPos = pos->second->GetANumber(); // Die Funktion aus der Klasse Blabla 
                                      // in diesem Fall hat der Key den Wert 2!
    
    // Und dann kannst du auch noch folgendes machen
    pos = BlaMapInst.find(0);
    // Nun enthält pos einen Zeiger auf das Element dem der Key '0' zugewiesen wurde 
    // In diesem Fall ist dies true!
    if(pos == BlaMapInst.begin()) cout << "TRUE" << endl;
    else cout << "FLASE" << endl;
    

    Ich hoffe das hat dir einwenig geholfen das zu verstehen



  • LOL, den 2. template-Parameter habe ich glatt vergessen 🙂



  • super beispiel danke eViLiSSiMo

    gruß elwida


Anmelden zum Antworten