Como acessar a variável privada do objeto instanciado dentro da classe

Estou tentando alterar uma variável privada de uma classe dentro de um objeto, que é inicializado dentro dessa classe. Minha intenção pode ser extraída do exemplo simples abaixo. aIncrement chamado deobj deve aumentar oBaseClass::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;
}

Uma maneira de pensar é passar coisas como parâmetro paraobj.Increment().

Existe uma maneira de conseguir isso sem passar como parâmetro?

questionAnswers(2)

yourAnswerToTheQuestion