gpt4 book ai didi

c++ - 从某个时候开始将变量设置为半只读

转载 作者:行者123 更新时间:2023-11-27 22:56:51 25 4
gpt4 key购买 nike

我想确保 vector 在某个时间点后保持不变,以便我可以安全地使用指向元素的指针。

当然,我不能在某个点后将其设为 const 或 readonly,并且我不想定义另一个 const 的变量,因为那样 vector 将被复制。此外,将 vector 的初始化放在构造函数中调用的函数中(当变量为只读时)会使我的代码结构不合逻辑。

因此,我希望有一个按照以下几行“笼中”的结构:

caged<Type> object;
object->change(); // underlying object changed
object.lock();
object->change(); // gives runtime error
const int data = object->getData(); // no problem

有这样的结构吗?

还有什么办法可以解决这个问题?

最佳答案

I don't want to define another variable which is const, because then the vector will get copied

不要复制,而是将你的 vector 移动到这个变量中。

在修改尝试时引发运行时错误是邪恶的。在编译时检查修改是正确的方法,C++ 的唯一机制是 const

用函数初始化const 变量是常用的方法。事实上,使用移动的局部 vector 或函数的结果初始化之间没有太大区别,后者也被隐式移动。正如@TartanLlama 在评论中正确提到的那样,在后一种情况下,拷贝可能(通常是)完全被忽略。

关于c++ - 从某个时候开始将变量设置为半只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960946/

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