Есть ли способ изменить внешний объект изнутри функции

Можно ли определить функцию, которая будет указывать аргумент на другой (уже существующий) объект после его возврата без использования указателей и т. Д.? Опять же, это не может просто изменить существующий объект с помощью конструктора копирования или оператора присваивания или чего-то еще. Внешний объект будет ссылаться на другой блок памяти при возврате функции.

Например:

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);

Без применения какого-либо специального оператора или функции к аргументу перед вызовом функции. Я не знаю, возможно ли это, но если бы это было возможно, это сделало бы очень крутые вещи возможными. Если нет, я также хотел бы знать, почему.

0
задан Seth Carnegie 8 August 2011 в 03:48
поделиться