Во-первых, терминология: вы правы, что World *
будет указателем на объект World. A World &
, однако, будет ссылкой на объект World. World
будет копией объекта Мира, а не ссылкой на него.
const
(используется в основном с указателем или ссылкой, как в World const &world
или World const *world
) означает, что вы получаете ссылку / указатель на объект const - другими словами, вы не разрешено изменять исходный объект, на который он ссылается / указывает.
Для небольших объектов вы обычно хотите передать копию. Для больших объектов вы обычно хотите передать константную ссылку. Есть исключения из этого, но это разумное практическое правило, пока вы не научитесь достаточно большему, чтобы знать, когда нарушать правила (так сказать).
Исходя из названия, я предполагаю, что ваш объект World, вероятно, достаточно велик, чтобы вы, вероятно, хотели передать его по константной ссылке, поэтому ваш ctor должен выглядеть следующим образом:
GameContext(World const &world);