我尝试创建一个类来轻松管理资源(ResourceManager)。
为此,我将模板与 C++11 一起使用。
这就是我所做的:
template<class K,class T>
class ResourceManager
{
public:
ResourceManager();
~ResourceManager();
/* code */
void clear();
private :
std::unordered_map<K,T> resource;
template <bool b>
void clear();
};
template<class K,class T>
void ResourceManager<K,T>::clear()
{
clear<std::is_pointer<T>::value>();
};
template<class K,class T>
template<bool b>
void ResourceManager<K,T>::clear<b>()
{
for(auto& x:resource)
delete x.second;
resource.clear();
}
template<class K,class T>
template<>
void ResourceManager<K,T>::clear<false>()
{
resource.clear();
}
简而言之,如果T
是指针(自动删除),我会尝试有不同的表现。
我尝试使用std::enable_if
,但我不明白它是如何运作的,以及这是否是正确的方法。
如果有人可以帮助我...