可能重复:
Determine if Type is a pointer in a template functionC++模板类型是否为指针或不
我正在寻找一种方法来确定一个模板是否是一个指针或不编译时间。因为当T不是指针时,程序将无法编译,因为您无法删除正常类型的变量。
template <typename T>
void delete(T &aVar)
{
// if T is a point
delete aVar;
aVar = 0;
// if T is not a point, do nothing
}
基本上,我学习到创建链接列表(不使用STL的list)自己。我试图在我的列表中使用模板,因此它可以采用任何类型。当类型是一个指针时,我想通过析构函数自动删除它(关键字delete)。
问题是,正如上面所写,当我使用int而不是列表中的某个类的某个指针时,VC2010将无法编译,因为您无法删除无指针变量。所以我正在寻找一种方法,如宏应该在删除aVar时根据模板类型进行编译或删除
你的意思是'operator delete'或'delete_something'? 'delete'是一个关键字。 – Potatoswatter 2010-10-07 16:06:08
欢迎来到SO :)请使用“101010”按钮或4空格缩进代码将其标记为代码。就像我刚刚为你做的那样:) – 2010-10-07 16:10:42
我不明白这是什么东西的重复?无论如何,在这种情况下可能只需要两个重载(一个对非指针没有任何作用)。也许这个班正在努力做太多 - 毕竟也许我不想让班级管理我的指针? – UncleBens 2010-10-07 16:30:59