Cast von void* zu Pointer auf Basisklasse

Hallo,

angenommen es existiernen zwei Klassen Parent und Child:

class Parent { virtual void f() = 0; };
class Child : Parent { virtual void f() {...} };

Dazu folgender Programmcode:

Child c;
void\* pV = &c;
Parent\* pP = (Parent\*) pV;
pP-\>f();

Nun die Frage: Ist das sicher oder handelt es sich um einen Fehler? (Da ja der void Pointer an ein Objekt eines Typen zugewiesen wird, der nicht dem richtigen Typen entspricht).

Danke,

Ben

Nun die Frage: Ist das sicher oder handelt es sich um einen
Fehler?

Es scheint zu funktionieren. Ich bin mir allerdings nicht sicher, ob das bei jedem Compiler funktionieren muss.

Die Frage ist ja, ob Instanzen von Child im Speicher so dargestellt werden müssen:

+--------+-------+
| Parent | Child |
+--------+-------+

Gruß Ben