Crash ao referenciar um objeto dentro de um outro objeto C++

Eu tenho uma classe chamada GameObject, nessa classe ela contem outros objetos tal como Player.hpp, Inimigo.hpp. Porém quando eu tento setar um valor especifico dentro do objeto Player, que esta dentro da classe GameObject, acaba por crashar o programa, talvez seja a forma como eu estou passando a função, mas n consigo identificar como.
Codigo que crasha:

		if(objetoColisor.y < objetoColidido.y+objetoColidido.h 
		&& objetoColisor.y+objetoColisor.h > objetoColidido.y)
	{
		
		if(tipoColisor=='P' && tipoColidido=='W'){
		
		objeto2->player->setGrounded(true); //Aqui esta o erro
		
		}
			
	}

Meu GameObject.hpp:

class GameObject{
	
	public:
		GameObject(SDL_Rect src,SDL_Rect dst,char x,SDL_Renderer* renderer);
		~GameObject();
		void updateObjeto();
		void setPosition(int x,int y);
		SDL_Rect getRectDst();
		SDL_Rect getRectSrc();
		SDL_Texture* getTexture();
		void setTexture(SDL_Texture* textura);
		char getTipo();
		Player* player;
		Walker* walker;
		
		
		
	private:
		SDL_Rect destination;
		SDL_Rect source;
		SDL_Texture* texturaObjeto;
		char tipo;
		void playerUpdate();
		void inimigoUpdate();
		SDL_Renderer* rendererObjeto;
		Loader* carregar = new Loader();
		
};

Meu Player.hpp

class Player{
		
	public:
		Player();
		~Player();
		
		SDL_Rect updatePlayerDestination(SDL_Rect destination);	
		SDL_Rect updatePlayerSprite(SDL_Rect source);	
		void setGrounded(bool x);
	private:
		float vspeed;
		float hspeed;
		bool grounded;
		float velocitySpeed=3;
};

Onde que você inicializou o objeto player?

quando eu crio um novo GameObject, em um dos seus parametros tem um char que identifica que tipo de objeto ele é, e assim inicializa. O input do meu Player funciona corretamente, ele se movimenta e tudo mais, creio que o erro seja realmente ao indicar um objeto dentro de um outro objeto(GameObject->Player->SetGrounded), mas não consegui encontrar na internet onde errei especificamente.

GameObject::GameObject(SDL_Rect src,SDL_Rect dst,char x,SDL_Renderer* renderer){

	source = src;
	destination = dst;
	tipo = x;
	rendererObjeto = renderer;
	
	if(tipo=='P'){
	player = new Player();
	texturaObjeto = carregar->loadTexture("player",rendererObjeto);
	}
	if(tipo=='W'){
	walker = new Walker();
	texturaObjeto = carregar->loadTexture("walker",rendererObjeto);
	}

}