如何删除变量可以是指针(模板)

问题描述 投票:0回答:1
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显示错误“我无法删除不是指针的对象”。请告诉我如何解决这个问题。我不会为该课程做专门研究(除非有其他解决方案)。

c++ list pointers memory-management
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.