c++ “unique_ptr”不是类模板,正在实现unique_ptr

g2ieeal7  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(298)

我有一段使用"unique_ptr"的代码,但Arduino环境现在知道了:

#include <memory>

所以我去了C++参考https://en.cppreference.com/w/cpp/memory/unique_ptr
在标题"内存"中定义

template<

    class T,
    class Deleter = std::default_delete<T>
> class unique_ptr;

template <

    class T,
    class Deleter
> class unique_ptr<T[], Deleter>;

我想这并不需要太多的"实施"。
我的H文件看起来像这样:

class state_deleter {  // a deleter class with state
  int count_;
public:
  state_deleter() : count_(0) {}
  template <class T>
  void operator()(T* p) {
    Serial.prinln("[deleted #");
    delete p;
  }
};

template <
    class T,
    class Deleter
> class unique_ptr<T[], Deleter>;


template <class T> class Circular_Buffer {
private:
  unique_ptr<T[],state_deleter> buffer; 
  // i left non relevant code out
};

更多信息:https://cplusplus.com/reference/memory/unique_ptr/管理指针的存储,提供有限的垃圾收集功能,几乎没有内置指针的开销(取决于使用的删除器)。https://cplusplus.com/ref...nique_ptr/get_deleter/
所以我从CPP引用中添加了上面的代码,通过添加"deleter",我删除了错误消息。但仍然有一个:

'unique_ptr' is not a class template

如果我没有访问它或需要一个稍微修改的版本,我已经实现了CPP参考之前的代码片段,它的工作。
能做到吗?
是什么使这个"模板类"成为一个智能指针?

class T,
class Deleter

在这个类定义中没有太多的内容。

相关问题