#include struct Punkt2D { int x, y; virtual ~Punkt2D() {} // für RTTI + dynamic_cast }; struct Punkt3D : public Punkt2D { int z; }; int main() { double const* d = new double(1.414); Punkt2D* p2 = new Punkt3D; Punkt3D* p3; p2->x = (int) *d; // typecast aus C p2->y = 2*int(*d); // Typkonverter in C++ *const_cast(d) = 3.0; // Schreibschutz entfernen p3 = reinterpret_cast(p2); // ganz gefährlich p3->z = static_cast(*d); // Typkonverter suchen p3 = dynamic_cast(p2); // downcast via RTTI if (p3) { std::cout << p3->x << ' ' << p3->y << ' ' << p3->z << '\n'; } else { std::cerr << "keine 3D-Information verfügbar" << '\n'; } delete p2; delete d; }