>>>dynamic_cast — не смог мне откастить (получал NULL pointer) — а reinterpret_cast помог ...
Ну дык значит преобразование невозможно (или невозможно напрямую). reinterpret_cast — это "дубовое преобразование", типа размеры совпадают — и все. dynamic_cast, по-моему, выполняет только upcasting и downcasting, то есть невозможно преобразовать один тип к другому, если они оба порождены от одного класса, но ни один из них не является потомком другого — тогда преобразовывай сперва к общему предку, а потом — к нужному.
А reinterpret_cast тебя спасет, только за последствия не отвечаю.