我需要更改static const int
成员的值。我知道这有点奇怪,但是我需要它来克服我使用的框架所赋予的限制!
我已经尝试过,但是没有用,它会显示一条错误消息:“未定义对MyClass :: staticConstMember的引用”:
class MyClass
{
static const int staticConstMember = 10;
};
int main()
{
int* toChageValue = const_cast<int*>(&MyClass::staticConstMember);
toChangeValue = 5;
std::cout<<MyClass::staticConstMember<<std::endl; // here I need to print 5
Return 0;
};
您不能希望可靠地做到这一点。即使您以某种方式设法说服内存中的位实际发生了更改(使用UB,例如您尝试的强制类型转换),也无法确定编译器会从该内存中发出加载指令,而不是缓存加载结果甚至进行硬编码const
对象在编译时具有的值。
static const int
)可以驻留在您的程序没有写访问权的一部分内存中的事实。执行您尝试的这种不安全的转换会导致程序出现访问冲突而崩溃。您将不得不找到实现您实际目标的另一种方法。