C++ 模板类型是否为指针

标签 c++ templates pointers

<分区>

Possible Duplicate:
Determine if Type is a pointer in a template function

我正在寻找一种在编译时确定模板是否为指针的方法。因为当 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 列表)。我尝试在我的列表中使用模板,因此它可以采用任何类型。当类型是指针时,我想通过析构函数自动删除它(关键字delete)。

问题是,如上所述,当我使用 int 而不是列表中某个类的指针时,VC2010 将无法编译,因为您无法删除非指针变量。所以我正在寻找一种方法,例如根据模板类型在删除 aVar 时应编译或不编译的宏来决定

最佳答案

让该函数使用 T* 而不是 T 怎么样?

关于C++ 模板类型是否为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883561/

相关文章:

c++ - Bazel 构建详细的编译器命令日志记录

c++ - c++ 概念是否会导致编写模板实例以构建输出?

C++ 实现从抽象模板派生的模板

c - 通过 malloc 故意隐藏内存

c - 通过函数传递变量 C

c# - 等价于 C++ 的#region

c++ - sublime text 2 C++ 在windows上运行报错

c++ - 在 OOP C++ 中内联函数的正确方法

c++ - 带有运算符语法的错误消息,但不是带有函数语法的错误消息

你能从 C 中的 void * 打印值吗