c++ - 如何删除可以是指针(模板)的变量?

标签 c++ list pointers memory-management

template<class I>
class list_node {
public:
    I val;
    list_node(list_node<I>* p, list_node<I>* n, I value) :prev(p), next(n), val(value) {};
    list_node(I value) :list_node(NULL, NULL, value) {};
    list_node<I>* next;
    list_node<I>* prev;
    ~list_node() { if (std::is_pointer<I>::value) { delete I; } }
};

我有这样一个类。用户可以传递指针类型作为“I”参数,所以我必须动态删除一个对象。但是 VS 2019 显示错误“我无法删除不是指针的对象”。 请告诉我如何解决这个问题。我不会专门针对此类(任何其他解决方案除外)。

最佳答案

这是智能指针有用的完美示例。

如果您还没有听说过 std::shared_ptr 和 std::unique_ptr,现在是时候记录一下自己了,它们是安全管理内存的非常有用的工具。

关于c++ - 如何删除可以是指针(模板)的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58269939/

相关文章:

list - 在 Lisp 中存储多变量多项式的最佳方式

python - 如何使用列表推导删除列表中相邻的重复元素?

c - 为什么我不能将指针 int *x 的值设置为 10?

c++ - 我的 CListCtrl 中的选定项目显示省略号,尽管有足够的空间!

c++ - 在 Qt 4 中直接在鼠标下缩放图像

c++ - QGraphicsScene 缺少特定项目更新

c++ - 如何找到我的阵列使用的内存

c++ - 为什么其他函数输出错误的值?

list - Haskell 中最先进的廉价列表操作?

c++ - read() 缓冲区有无效数据(指针问题?)