Я продолжаю слышать это выражение, хотя я не могу найти причину, по которой const_cast злой.
В следующем примере:
template <typename T>
void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src)
{
oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src);
}
Я использую ссылку, и, используя const, я защищаю мою ссылку от изменения. С другой стороны, если я не использую const_cast, код не будет компилироваться. Почему здесь const_cast не работает?
То же самое относится к следующему примеру:
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));
}
}
Просьба привести несколько примеров, в которых я могу видеть, как плохая идея/непрофессионал использовать const_cast.
Спасибо за любые усилия:)