Downcasting de herança do C ++

Eu tenho minha classe base da seguinte forma:

class point    //concrete class
{
 ...    //implementation
}

class subpoint : public point  //concrete class
{
...     //implementation
}

Como faço para converter de um objeto de ponto para um objeto de subponto? Eu tentei todos os três dos seguintes:

point a;
subpoint* b = dynamic_cast<subpoint*>(&a);
subpoint* b = (subpoint*)a;
subpoint b = (subpoint)a;

O que há de errado com esses elencos?

questionAnswers(6)

yourAnswerToTheQuestion