Ich würde gerne einen Zeiger durch Verweis auf eine Funktion übergeben, so dass ich tatsächlich die Adresse ändern kann, die der übergebene Zeiger zeigt, und ich möchte dieses Argument einen Standard zuweisen Wert.C++ übergeben Zeiger per Referenz und vergeben Standardwert
etwas wie folgt aus:
in der Erklärung
void myFunc(SomeType* &var=NULL);
und die Definition:
void MyClass::myFunc(SomeType* &var){
if(var!=NULL)
(*var)=(*someOtherPointer);
if(someCondition)
var=NULL;
}
, so dass ein Angerufener kann entscheiden, ob er die Funktion mit einem Argument nennen oder ohne Argument. Und sucht, wenn er beschließt, ein Argument zu übergeben, und someCondition hält, wird der übergebene Zeiger danach
jedoch auf NULL Punkt - wenn ich versuche, es so zu tun, ich bekomme ein:
Fehler C2440: ‚default argument ':' int 'kann nicht zu' SomeType * & '
übermittelt werden Danke für die Hilfe!
Wenn "someCondition" nicht "var! = NULL" enthält, haben Sie eine Antwort akzeptiert, bei der ein NULL-Zeiger de-referenziert wird. Wahrscheinlich nicht was du wolltest. – imaginaryboy
Beachten Sie auch, dass die Verwendung von (** var) = (* someOtherPointer) tatsächlich eine Objektkopie erstellt. Wenn Sie nur eine Zeigerkopie erstellen möchten, möchten Sie wahrscheinlich (* var) = (someOtherPointer). – Thought