gpt4 book ai didi

c++ - 在 C++ 中更改 static const int 的值

转载 作者:行者123 更新时间:2023-11-30 00:42:48 25 4
gpt4 key购买 nike

我需要更改 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 数据类型定义的对象在 C++ 中是不可变的,编译器知道这一点并利用这一知识。

你不能指望可靠地做到这一点。即使您以某种方式设法说服内存中的位实际发生变化(使用 UB,例如您正在尝试的转换),您也永远无法确定编译器会从该内存发出加载指令,而不是缓存加载结果甚至硬编码const 对象在编译时的值。

更不用说这样一个对象(static const int)可以驻留在您的程序没有写入权限的内存部分。像您尝试的那样执行不安全的转换会导致您的程序因访问冲突而崩溃。

您将不得不找到一种不同的方式来实现您的实际目标。

关于c++ - 在 C++ 中更改 static const int 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58265898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com