С помощью оператора * на указателе вы разыменовываете его, получая объект Ball. Поскольку вы фактически передаете свой параметр в функцию, которая принимает Ball & (то есть ссылку Ball), будет передана только ссылка, а не весь объект. Правильное использование:
move(*ball);
Но я предлагаю вам назвать переменные таким образом, чтобы «говорить» об их природе, поэтому ballPtr
или ball_ptr
будет более уместным, и вы никогда не будете забудь о разыменовании.