Zeiger auf std::vector



  • Hallo

    Ich stehe gerade wieder mal auf dem Schlauch:

    Ich habe eine Funktion, der ich einen

    std::vector<CMeineKlasse>* p_Temp
    

    übergeben will. Nun will ich innerhalb der Funktion auf die Elemente von CMeineKlasse zugreifen:

    int i = p_Temp[i]->m_iMeineIntVariabel;
    

    Ich bekomme aber immer die Fehlermeldung, dass es den Operator -> nicht gibt.

    Hat jemand eine Idee, wie man das trotzdem lösen könnte.

    chrische



  • Du übergibst einen Zeiger auf einen Vektor von CMeineKlasse-Objekten.

    // Den Zeiger löst du auf indem du ihn als Array behandelst:
    p_Temp[5] // Greife auf den 5. Vektor auf CMeineKlasse-Objekte zu
    

    Ich glaube du suchst eher soetwas?:

    std::vector<CMeineKlasse*> temp;
    
    temp[5]-> // Greife auf das 5. Element des Vektors zu, da das ein Zeiger auf CMeineKlasse ist kannst du -> benützen
    

    MfG SideWinder



  • Hallo

    Ich versuche einen Zeiger auf einen std::vector zu übergeben. Ich versuche nicht einen std::vector mit Zeigern auf eine Klasse zu übergeben. Kann man überhaupt einen Zeiger auf einen std::vector benutzen, oder ist dies nicht sinnvoll. Ich realisiere es derzeit mit einer Referenz auf den vectro, da ich mir aber angewöhnt habe Referenzen als const zu übergeben, wollte ich mit Zeigern arbeiten.

    chrische



  • Hallo,

    du musst es so machen:

    int i = (*p_Temp)[i]->m_iMeineIntVariabel
    

    PS:
    Du hast noch Glück dass es den oparator -> nicht für die Klasse vector<> gibt sonst würdest du auf *(zeigeraufvector + i) zugreifen. Das würde Krachen.



  • Da fällt mir noch was auf.
    1. Mach einen typedef für vector<foo>
    2. Übergib ne Referenz. Dann kannst du den Rest auch so lassen

    also:

    void func(vector<foo>& para)
    ...
    


  • Hallo

    templäd schrieb:

    Hallo,

    du musst es so machen:

    int i = (*p_Temp)[i]->m_iMeineIntVariabel
    

    Vielen Dank. Ich habe aus dem -> ein . gemacht und schon hat es funktioniert. Nochmals vielen Dank für die Denkanstösse.

    chrische


Anmelden zum Antworten