C ++: Warum ist const_cast böse?
Ich höre diese Aussage immer wieder, obwohl ich den Grund, warum const_cast böse ist, nicht wirklich finden kann.
Im folgenden Beispiel:
<code>template <typename T> void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src) { oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src); } </code>
Ich verwende eine Referenz und durch die Verwendung von const schütze ich meine Referenz vor Änderungen. Wenn ich dagegen const_cast nicht verwende, wird der Code nicht kompiliert. Warum sollte const_cast hier schlecht sein?
Gleiches gilt für folgendes Beispiel:
<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>
Bitte geben Sie mir einige Beispiele, in denen ich sehen kann, wie schlecht / unprofessionell es ist, einen const_cast zu verwenden.
Vielen Dank für alle Bemühungen :)