C ++: Por que o mal const_cast?
Eu continuo ouvindo essa afirmação, enquanto não consigo encontrar a razão pela qual const_cast é o mal.
No exemplo a seguir:
<code>template <typename T> void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src) { oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src); } </code>
Estou usando uma referência e, usando const, estou protegendo minha referência de ser alterada. Por outro lado, se eu não usar const_cast, o código não será compilado. Por que o const_cast seria ruim aqui?
O mesmo se aplica ao seguinte exemplo:
<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 me forneça alguns exemplos, nos quais eu posso ver como é uma má idéia / não profissional usar um const_cast.
Obrigado por qualquer esforço :)