aplicação recursiva do operador->

Diz-se que o operador da flecha é aplicado recursivamente. Mas quando tento executar o código a seguir, ele imprime sem sentido quando é suposto imprimir 4.

<code>class dummy
{
public:
    int *p;

    int operator->()
    {
        return 4;
    }
};

class screen 
{
public:
    dummy *p;

    screen(dummy *pp): p(pp){}
    dummy* operator->()
    {
        return p;
    }
};

int main()
{
    dummy *d = new dummy;
    screen s(d);
    cout<<s->p;
    delete d;
}
</code>

questionAnswers(3)

yourAnswerToTheQuestion