¿Por qué necesita eso? ¿Desea deshacerse de todos ellos?
Los moldes de estilo C para tipos fundamentales como (double)
son seguros y se ven mucho mejor que static_cast<double>()
. Yo personalmente prefiero este estilo.
En caso de clases polimórficas, el problema de la C-estilo arroja es exagerado groseramente en mi humilde opinión. Puede ser un problema solo si usa herencia múltiple y tiene que hacer cross-casting. Por defecto, los moldes de estilo C no funcionarán allí. Pero en la mayoría de los casos ()
funciona exactamente como static_cast<>()
y no perdería tiempo en reemplazarlos. De todos modos, para los tipos polimórficos, utilizo moldes de estilo C++ cuando escribo un nuevo código o cambio algo.
ACTUALIZACIÓN:
chicos, parece que expresé mi opinión no es tan clara. Sí, conozco la teoría: C++: el yeso es bueno, C-cast es malo. Esta regla (y la mayoría de las demás) es necesaria para salvar a los novatos de C++. Pero eso no significa que siempre necesites seguirlo.
Mi punto es que los moldes de estilo C no son tan terribles. Si escribe alguna función como
int convertFooToBar(double i_foo)
, no hay motivos para utilizar moldes de estilo C++ en la implementación. No son más seguros que (int)
pero parecen desordenados. Casting no es complicado en tal caso. No es nada malo o complicado en el casting: a veces los moldes son naturales.
acerca de las búsquedas: No recuerdo que yo estaba buscando cualquier declaración fundido en los últimos 10 años, aunque estoy manteniendo varios millones de líneas de código C++ legado en base diaria. Ni siquiera recuerdo ningún problema serio debido a un casting incorrecto.
La pregunta original trata de reemplazar los moldes de estilo C ya escritos. Entonces, mi respuesta es:
Sí, los moldes de estilo C++ son mejores y más seguros que los de estilo C. Pero no significa que necesita buscar para los antiguos en su código y tratar de deshacerse de todos ellos. En realidad, no es un problema real. Simplemente no pierdas tu tiempo.Puede gastarlo en buscar y eliminar algún código desactualizado. Sería más útil para tu código base.
Pero estoy utilizando Visual C++ (MFC) :( –
Es posible que desee comprobar los C modificadores del compilador de Visual C++ para ver si hay uno para desactivar esta advertencia o si tienen uno que puede especificar deshabilitar ciertas advertencias Si no existe dicho conmutador, puede desactivar la advertencia con un pragma en los archivos que están causando la infracción. He utilizado con Visual C++ para desactivar algunas advertencias sobre la longitud de los nombres STL al compilar – Glenn