45

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?

Cody Gray - on strike
  • 239,200
  • 50
  • 490
  • 574
Sid Zhang
  • 972
  • 3
  • 9
  • 18

0 Answers0