Мне нужно преобразовать целочисленный тип, который содержит адрес, в фактический тип указателя. Я мог бы использовать reinterpret_cast следующим образом:
MyClass *mc1 = reinterpret_cast<MyClass*>(the_integer);
Однако это не выполняет никаких проверок во время выполнения, чтобы увидеть, действительно ли рассматриваемый адрес содержит объект MyClass. Я хочу знать, есть ли какая-либо польза от первого преобразования в void* (с использованием reinterpret_cast), а затем с использованием dynamic_cast для результата. Как это:
void *p = reinterpret_cast<void*>(the_integer);
MyClass *mc1 = dynamic_cast<MyClass*>(p);
assert(mc1 != NULL);
Есть ли преимущества в использовании второго метода?