Herencia de C ++ downcasting

Tengo mi clase base de la siguiente manera:

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

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

¿Cómo puedo convertir desde un objeto de punto a un objeto de subpunto? He intentado los tres de los siguientes:

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

¿Qué está mal con estos moldes?

Respuestas a la pregunta(6)

Su respuesta a la pregunta