Advertencia del compilador (nivel 1) C4946
Actualización: noviembre 2007
Mensaje de error
se utilizó reinterpret_cast entre clases relacionadas: 'clase1' y 'clase2'
reinterpret_cast used between related classes: 'class1' and 'class2'
No se debe usar reinterpret_cast para realizar conversiones entre tipos relacionados. Utilice static_cast o una conversión de estilo C.
De forma predeterminada, esta advertencia está desactivada. Para obtener más información, vea Advertencias del compilador desactivadas de forma predeterminada.
El ejemplo siguiente genera el error C4946:
// C4946.cpp
// compile with: /W1
#pragma warning (default : 4946)
class a {
public:
a() : m(0) {}
int m;
};
class b : public virtual a {
};
class b2 : public virtual a {
};
class c : public b, public b2 {
};
int main() {
c* pC = new c;
a* pA = reinterpret_cast<a*>(pC); // C4946
// try the following line instead
// a* pA = static_cast<a*>(pC);
}