Вы можете сделать так:
void test(Object* a, Object*& b)
{
std::cout << "test a: " << a << std::endl;
std::cout << "test b: " << b << std::endl;
b = a;
std::cout << "test b assigned: " << b << std::endl;
}
int main()
{
Object* a = new Object();
Object* b = NULL;
test(a, b);
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
delete a, b;
}
Вывод будет:
test a: 0x7a0d28
test b: 0
test b assigned: 0x7a0d28
a: 0x7a0d28
b: 0x7a0d28
Это потому, что вы задали значение b, а не ссылку на него,который требуется изменить его.Переменные могут быть изменены только функцией, если эта функция получает адрес этих переменных, и это может быть сделано только через указатель (Object **) или ссылку (Object * &)