Firstly, if you only declare a type, you can only use pointer or reference.
class Player; // declaration, not definition
class Base {
Player* p;
};
Secondly, namespaces are extendable, so you can write as follow:
namespace Foo { class Player; }
And use pointer:
class Base {
Foo::Player* p;
}