Возможный дубликат:
Должен ли я использовать static_cast или reinterpret_cast при запуске void * для любого
В этой программе у меня есть void *
в качестве параметра и вы хотите передать его определенному типу. Но я не знаю, какой "литой символ" использовать. Работают как static_cast
, так и reinterpret_cast
. Какая из них лучше? Что рекомендует стандартный С++?
typedef struct
{
int a;
}A, *PA;
int foo(void* a) // the real type of a is A*
{
A* pA = static_cast<A*>(a); // or A* pA = reinterpret_cast<A*>(a);?
return pA->a;
}
Здесь
A* pA = static_cast<A*>(a);
или
A* pA = reinterpret_cast<A*>(a);
более верно?