Cómo acceder a la variable privada desde el objeto instanciado dentro de la clase

Estoy tratando de cambiar una variable privada de una clase dentro de un objeto, que se inicializa dentro de esa clase. Mi intención se puede extraer del simple ejemplo a continuación. elIncrement llamado desdeobj debería aumentar elBaseClass::stuff.

template <typename ObjectType>
class BaseClass{
 public:

  int Increment(){
    return obj.Increment();
  }

 private:
  int stuff = 0;
  ObjectType obj;
};

class ObjectType{
  public:     
   int Increment ()
   {
      return BaseClass<ObjectType>::stuff++;
   };
};

int main () {
  BaseClass<ObjectType> base;
  base.Increment(); // should increase stuff by 1;
}

Una forma en que puedo pensar es pasar cosas como parámetro aobj.Increment().

¿Hay alguna manera de lograr esto sin pasarlo como parámetro?

Respuestas a la pregunta(2)

Su respuesta a la pregunta