zurückgegeben wird, nicht übergeben, warum brauche ich Zwischenvariable, um meinen Rückgabezeiger als Verweis zu übergeben, statt nur die Funktion zu verwenden, die den Zeiger zurückgibt?kann einen Zeiger, der von einer Funktion
nicht kompiliert Dies verbietet nicht
int main()
{
testfunc(getpointer());
return 0;
}
error: C2664: 'void testfunc(int *&)': cannot convert argument 1 from 'int *' to 'int *&'
und dies stellt
int main()
{
int *i = getpointer();
testfunc(i);
return 0;
}
meine beiden Funktionen
void testfunc(int *& i) // I have to use this interface
{
cout << i[0] <<endl;
}
int* getpointer()
{
int * arr1 = new int[1];
arr1[0]=10;
return arr1;
}
Weil es ein temporäres Objekt ist. –
richtig! aber warum kann dieses temporäre Objekt nicht an testfunc übergeben werden? es hat immer noch eine Adresse und es kann zugegriffen werden? Recht ? oder vermisse ich etwas? – HazemGomaa
@DavidSchwartz wenn diese Adresse dann zerstört wird? Ich ging davon aus, dass zumindest die Adresse an testfunc übergeben wird. Warum nicht? – HazemGomaa