繁体   English   中英

更改 c++ 中 static const int 的值

[英]Change value of static const int in c++

我需要更改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;
};

你不能。 时期。 实际使用const数据类型定义的 object 在 C++ 中是不可变的,编译器知道这一点并利用这些知识。

你不能指望可靠地做到这一点。 即使您设法说服 memory 中的位实际更改(使用 UB,例如您正在尝试的演员表),您也永远无法确定编译器会从该 memory 发出加载指令,而不是缓存加载结果甚至硬编码const object 在编译时的值。

更不用说这样一个 object ( static const int )可以驻留在您的程序没有写访问权限的 memory 的一部分中。 尝试执行这种不安全的强制转换会使您的程序因访问冲突而崩溃。

你必须找到一种不同的方式来实现你的实际目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM