"warning: use of old-style cast" in g++ [duplicate]
Possible Duplicate:
When should static_cast, dynamic_cast and reinterpret_cast be used?
With this C++ code,
char* a = (char*) b;
I got warning warning: use of old-style cast
.
What would be the new-style cast?
Solution 1:
reinterpret_cast
, static_cast
, dynamic_cast
and const_cast
are the c++ cast alternatives.
-
const_cast
to remove const/volatile from a const variable. -
dynamic_cast
to perform runtime validity checks when casting in between polymorphic types -
static_cast
to perform e.g up/down-cast in a inheritance hierarchy, but with no runtime checks, or to explicitly perform conversions that could be implicit (e.g. float to int) -
reinterpret_cast
to convert in between unrelated types.
Brief syntax example:
char* a = (char*) b;
//would be
char* a = static_cast<char*>(b);
//to remove the warning
Solution 2:
Read this topic to know about C++ style casts which come in various flavors:
When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?