Пожалуйста, объясните мне, почему я не могу изменить константу, используя следующую?
const int i = 10; int * p = reinterpret_cast<int *>(&i);
Вы должны использовать const_cast, чтобы выбросить константу, const_cast специально для этого случая.
const_cast
const означает константу, поскольку вы не можете ее изменить. Вы можете сделать int nonconst_i = const_cast<int>(i);, затем использовать nonconst_i
int nonconst_i = const_cast<int>(i);