C ++: ¿Por qué es const_cast el mal?
Sigo escuchando esta declaración, mientras que realmente no puedo encontrar la razón por la cual const_cast es malo.
En el siguiente ejemplo:
<code>template <typename T> void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src) { oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src); } </code>
Estoy usando una referencia, y al usar const, estoy protegiendo mi referencia para que no se modifique. Por otro lado, si no uso const_cast, el código no se compilará. ¿Por qué const_cast sería malo aquí?
Lo mismo se aplica al siguiente ejemplo:
<code>template <typename T> void SysSystemBase<T>::addOscillator(const SysOscillatorBase<T> &src) { bool alreadyThere = 0; for(unsigned long i = 0; i < oscillators.size(); i++) { if(&src == oscillators[i]) { alreadyThere = 1; break; } } if(!alreadyThere) { oscillators.push_back(const_cast<SysOscillatorBase<T>*>(&src)); } } </code>
Por favor, dame algunos ejemplos, en los que pueda ver cómo es una mala idea / no profesional usar un const_cast.
Gracias por cualquier esfuerzo :)