C++ odd compile error: error: changes meaning of "Object" from class "Object"
Your problem is that names are looked up in scopes. Within the declaration of HalfSet::setPlayer(Player*)
, the unqualified name Player
needs to be looked up. The first scope tried is class HalfSet
. In that scope, the lookup of Player
finds function HalfSet::Player
, not global class ::Player
.
The solution is to use a qualified name, ::Player
. This tells the compiler which scope to use for lookup (global) which in turn means HalfSet::Player
is not even considered.
In C++ you cannot name a function the same name as a class/struct/typedef. You have a class named "Player" and so the HalfSet class has a function named "Player" ("Player *Player()"). You need to rename one of these (probably changing HalfSet's Player() to getPlayer() or somesuch).