gpt4 book ai didi

c++ - 模板中的 const_cast。有 unconst 修饰符吗?

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

我有一个这样的模板类:

template<T>
class MyClass
{
T* data;
}

有时,我想像下面这样使用具有常量类型 T 的类:

MyClass<const MyObject> mci;

但我想使用 const_cast<MyObject*>data 修改数据(为什么不重要,但 MyClass 是一个引用计数智能指针类,它将引用计数保存在数据本身中。MyObject 派生自某种包含计数的类型。数据不应该被修改,但计数必须被智能指针修改。)。

有没有办法从 T 中移除常量性? ?虚构代码:

const_cast<unconst T>(data) 

?

最佳答案

这里最简单的方法是使引用计数可变。

但是,如果您对它如何与 const_cast 一起工作感兴趣,那么重新实现 boost 的 remove_const 应该非常简单:

template <class T>
struct RemoveConst
{
typedef T type;
};

template <class T>
struct RemoveConst<const T>
{
typedef T type;
};

const_cast<typename RemoveConst<T>::type*>(t)->inc();

关于c++ - 模板中的 const_cast。有 unconst 修饰符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516563/

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