bonjour j'ai un probléme de compilation

voila le messages

prsieux@prsieux-laptop:~/info/Project/Jeux/Pong$ g++ -c InitEngine.o InitEngine.cpp
Engine.hpp: In member function «Engine& Engine::operator=(const Engine&)»:
Engine.hpp:11: erreur: non-static reference member «EventGestion& Engine::EventBoucleMain», can't use default assignment operator
InitEngine.cpp: In constructor «InitEngine::InitEngine()»:
InitEngine.cpp:20: note: synthesized method «Engine& Engine::operator=(const Engine&)» first required here
voila le code

InitEngine.hpp
#ifndef _INIT_ENGINE_HPP_
#define _INIT_ENGINE_HPP_

#include <vector>

#include "EventGestion.hpp"
class Engine;
/*
Cette classe vas initialisé tout les moteur du jeux
*/
class InitEngine
{
public:
InitEngine();
~InitEngine();

protected:
EventGestion EventBoucle;
std::vector<Engine> TabEngine;


};

#endif //end _INIT_ENGINE_HPP_

InitEngine.cpp
#include <vector>

#include "InitEngine.hpp"
#include "EventGestion.hpp"
#include "Engine.hpp"
/*
#include "EngineGraphics.hpp"
#include "EnginePhy.hpp"
#include "EngineIn.hpp"
*/

InitEngine::InitEngine()
{
const int numberEngine = 3;


EventBoucle;
TabEngine.reserve(numberEngine);

TabEngine[0] = Engine(EventBoucle);
TabEngine[1] = Engine(EventBoucle);
TabEngine[2] = Engine(EventBoucle);

EventBoucle.addrEngine(TabEngine);
EventBoucle.main();
}

InitEngine::~InitEngine()
{
}
et Engine.hpp les autres ne pose pas de probléme
#ifndef _ENGINE_HPP_
#define _ENGINE_HPP_

#include <queue>

//#include "MsgEngine.hpp"
#include "EventGestion.hpp"


class Engine
{
public:
Engine(EventGestion& EventBoucle);
// bool DealMsg(MsgEngine& MsgDeal);



protected:
EventGestion& EventBoucleMain;
// std::queue<MsgEngine> MsgEngineQueue;
// bool AddMsg(MsgEngine& MsgAdd);
};

#endif // end _ENGINE_HPP_

si je met EventGestion& EventBoucleMain static sa compile mais sa me sert a rien de le maitre en static. Et je voudrait eviter un pointeur mais je veut pas copier l'objet.