gpt4 book ai didi

c++ - 是否可以锁定变量以防止在 C++ 中对其进行更改?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:11 25 4
gpt4 key购买 nike

我正在使用一个成员变量,在程序的某个时刻我想更改它,但我更喜欢在其他任何地方“锁定它”以防止意外更改。

代码解释:

class myClass {
int x; // This should be prevented to being changed most of the time
int y; // Regular variable
myclass() {x = 1;}
void foo1 () {x++; y++;} // This can change x
void foo2 () {x--; y--;} // This shouldn't be able to change x
// I want it to throw a compile error
};

问题是:能否以某种方式实现?像永久 const_cast 之类的东西?

我知道我可以立即使用构造函数初始化列表和常量,但我需要稍后更改我的变量。

最佳答案

好吧,我不喜欢所有其他答案,所以这是我的想法:隐藏变量。

#define READONLY(TYPE, VAR) const TYPE& VAR = this->VAR //C++03
#define READONLY(VARIABLE) const auto& VARIABLE = this->VARIABLE //C++11

class myClass {
int x; // This should be prevented to being changed most of the time
int y; // Regular variable
myClass() :x(1), y(2) {}
void foo1 () {// This can change x
x++;
y++;
}
void foo2 () {// This shouldn't be able to change x
READONLY(x); //in this function, x is read-only
x++; //error: increment of read-only variable 'x'
y++;
}
};

仍然有一些方法可以绕过变量的锁定(例如this->x),但是对于那些情况我们无能为力。

关于c++ - 是否可以锁定变量以防止在 C++ 中对其进行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866440/

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