pointer übergabe bei funktionen
-
hi,
ich bin etwas durcheinander und frage mich was hierbei schief läuft...typedef std::vector< Triangle > TRIANGLEVEC; typedef std::vector< unsigned int > UNSIGNEDINTVEC; //prototype void makeIndexArray( TRIANGLEVEC *trivec, UNSIGNEDINTVEC *result ); TRIANGLEVEC *tri = new TRIANGLEVEC( 10 );//halt mit irgendwelchen daten gefüllt UNSIGNEDINTVEC *p = NULL; //zeigt ins leere . . . makeIndexArray( tri, p );//funktion aufrufen mit tri, ergebnis soll in p //abgelegt werden //funktion aufs wesentliche vereinfacht... void makeIndexArray( TRIANGLEVEC *trivec, UNSIGNEDINTVEC *result ){ result= new UNSINGNEDINTVEC( trivec->size() ); }das merkwürdige hier dran ist das nach verlassen der funktion makeIndexArray der pointer p immer noch auf NULL zeigt.
ich bin null völlig verwirrt...auf die daten von tri kann ich in der funktion makeIndexArray zugreifen...nur leider geht das ergebnis verloren...

versteht jemand das problem und kann mir helfen?
danke und grüße
-
Hallo,
der Pointer wird immer noch by Value übergeben, d.h. um den Pointer selber zu modifizieren, brauchst du einen Pointer auf einen Pointer.
MfG
GPC
-
Du übergibst einen Zeiger by-value, d.h. in der Funktion makeIndexArray hast Du nur eine Kopie des Zeigers. Diese Kopie kannst Du ändern wie Du willst, das kommt aussen nicht an (anders als Änderungen an dem Objekt auf das gezeigt wird). Du musst eine Referenz auf den Zeiger übergeben, damit keine Kopie mehr angelegt wird.
void makeIndexArray( TRIANGLEVEC* trivec, UNSIGNEDINTVEC*& result )
-
aaahh, danke. da geht einem doch ein lichtlein auf.
hat so gefunzt danke