我有一个这样的模板类:
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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)