Your problem is this function
void ComponentMadiator::Register(
const GameObjectType gameObjectType,
IGameObject*& gameObj)
It should probably accept non-reference
ComponentMadiator::Register(
const GameObjectType gameObjectType,
IGameObject *object)
or accept a const reference to a pointer.
The underlying issue is that you can't decay a referece to a temporary to a non-const reference.