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 zuIch 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ützenMfG 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_iMeineIntVariabelPS:
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 lassenalso:
void func(vector<foo>& para) ...
-
Hallo
templäd schrieb:
Hallo,
du musst es so machen:
int i = (*p_Temp)[i]->m_iMeineIntVariabelVielen Dank. Ich habe aus dem -> ein . gemacht und schon hat es funktioniert. Nochmals vielen Dank für die Denkanstösse.
chrische