Bräuchte mal Hilfe mit Call-by-Reference
-
Normal benutze ich nur CBV, aber jetzt ist wohl mal CBR nötig. Ich habe nun etwas programmiert, aber die Werte werden nicht übergeben. Hier etwas Code:
Haupt-Klasse:
// data buffer (diese Zeiger zeigen bereits auf gültige Daten) double *pdDistance; short *psIntensity;Haupt-Klasse:
int MainClass::GetMyData(double* pdD, short* psI) { pdD=pdDistance; psI=psIntensity; // to do: Schutz vor leerem Pointer, bei Fehler return -1 return 0; }Andere Klasse:
// data buffer double* pdD; short* psI;Andere Klasse:
[...] int error = m_pMainDlg->GetMyData(pdD,psI); [...]Zusammengefasst: In der Hauptklasse liegen Daten in 2 Buffern. Eine andere Klasse will diese Daten irgendwann holen. Dazu rufe ich GetMyData() auf, in der Hoffnung, dass ich 2 Zeiger auf die Buffer zurückbekomme. Bekomme ich aber gerade nicht. Ich schätze ich habe irgendwas mit den & und * Zeichen nicht verstanden. Nur was muss wohin? Danke für Eure Hilfe!
-
Du übergibst deine Pointer immernoch by Value.
Wenn du das Ziel der Pointer ändern willst, müsstest du es so machen:int MainClass::GetMyData(double*& pdD, short*& psI) { pdD=pdDistance; psI=psIntensity; // to do: Schutz vor leerem Pointer, bei Fehler return -1 return 0; }Edit: Alternative um es hoffentlich ganz klar zu machen:
int MainClass::GetMyData(double** pdD, short** psI) { (*pdD)=pdDistance; (*psI)=psIntensity; // to do: Schutz vor leerem Pointer, bei Fehler return -1 return 0; }
-
Ah, stimmt, jetzt klappts, danke
