const_cast
может изменять только константу типа. Если вы хотите вызвать неявный оператор, у вас есть static_cast
, а затем const_cast
. Хотя это раздражает, оно гарантирует, что вы четко указали, что делаете.
myPtr = const_cast<int*>(static_cast<const int*>(obj));
Вы также можете использовать оператор приведения в старом стиле в стиле c
myPtr = (int*)(const int*)obj;
Но это крайне не рекомендуется по нескольким причинам:
- Это не grepable
- Вы можете очень легко сделать больше, чем вы хотели. В большинстве случаев вы не хотите связываться с операциями типа
const_cast
, и использование static_cast
обеспечивает это. На самом деле вы очень редко хотите const_cast
. Если вы обнаружите, что делаете это регулярно, у вас есть ошибки в дизайне.
Редактировать: Я был немного не в порядке, я исправил это сейчас. Это делает бросок в стиле с немного уродливее