¿Cómo acceder al método protegido en la clase base desde la clase derivada?

Aquí hay una muestra de código que me molesta:

class Base {
  protected:
    virtual void foo() = 0;
};

class Derived : public Base {
  private:
    Base *b; /* Initialized by constructor, not shown here
                Intended to store a pointer on an instance of any derived class of Base */

  protected:
    virtual void foo() { /* Some implementation */ };
    virtual void foo2() {
      this->b->foo(); /* Compilator sets an error: 'virtual void Base::foo() is protected' */
    }
};

¿Cómo se accede a la función anulada protegida?

Gracias por tu ayuda. : o)

Respuestas a la pregunta(6)

Su respuesta a la pregunta