删除向量

时间:2015-10-20 18:24:56

标签: c++ pointers

我遇到了这段代码的问题: 首先,我创建一个这样的类:

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是一个指针。 我该如何处理? 提前谢谢。

1 个答案:

答案 0 :(得分:4)

您可以partially specialise templates获取指针。这是一个非常简单的例子:

type=\"submit\" id=".$id_note." name=\"delete\" value=\"Delete\"> //id_note=my variable