ポインタなどを使用せずに戻った後、引数が別の(既存の)オブジェクトを参照するようにする関数を定義することは可能ですか?繰り返しますが、これは、コピーコンストラクターや代入演算子などを使用して既存のオブジェクトを変更することはできません。関数が返されたときに、外部オブジェクトは別のメモリブロックを参照します。
例えば:
int x;
void change(int& blah) {
blah = x; // I don't want to change blah's value to x's value, I want to make blah refer to x outside the function
}
void main() {
int something = 0;
change(something);
assert(&x == &something);
}
使用するメソッドに関係なく、関数は次のように呼び出す必要があります
change(x);
関数を呼び出す前に、引数に特別な演算子や関数を適用しません。これが可能かどうかはわかりませんが、可能であれば非常にクールなことが可能になります。そうでない場合は、その理由も知りたいと思います。