In this program I have a void *
as a parameter and want to cast it to a specific type. But I don't know which "casting symbol" to use. Both static_cast
or reinterpret_cast
work. Which one is better? Which one does the Standard C++ recommend?
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;
}
Here, is
A* pA = static_cast<A*>(a);
or
A* pA = reinterpret_cast<A*>(a);
more proper?