なぜ、そのポインタを返す関数を使用するのではなく、参照で返すポインタを渡す中間変数が必要ですか?関数から返されたポインタを参照渡しすることはできません
これは
int main()
{
testfunc(getpointer());
return 0;
}
error: C2664: 'void testfunc(int *&)': cannot convert argument 1 from 'int *' to 'int *&'
をコンパイルしていないと、これはコンパイル
int main()
{
int *i = getpointer();
testfunc(i);
return 0;
}
私の二つの機能
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;
}
一時的なオブジェクトだからです。 –
右なぜこの一時的なオブジェクトがtestfuncに渡せないのでしょうか?それはまだアドレスを持っており、アクセスすることができますか?右 ?または私は何かが恋しいですか? – HazemGomaa
@DavidSchwartzこのアドレスが破壊されたら?私は、少なくともアドレスがtestfuncに渡されると仮定していました。なぜそうではありませんか? – HazemGomaa