我遇到了这段代码的问题: 首先,我创建一个这样的类:
template <typename T1, typename T2> class MyClass
{
private:
std::vector<T2> m_values;
static const bool HAS_POINTER = std::is_pointer<T2>::value;
};
根据需要,T2可以是类型或指针。 我的问题是当我尝试发布指针时:
template<typename T1, typename T2> void MyClass<T1, T2>::Clear()
{
if (HAS_POINTER)
{
for (int i = 0; i < m_values.size(); ++i)
delete m_values[i];
}
}
这里编译器抱怨显示错误C2541:无法删除不是指针的对象 我知道编译器是正确的,但问题是T2,在某些情况下,IS是一个指针。 我该如何处理? 提前谢谢。
答案 0 :(得分:4)
您可以partially specialise templates获取指针。这是一个非常简单的例子:
type=\"submit\" id=".$id_note." name=\"delete\" value=\"Delete\"> //id_note=my variable