我有一段使用"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
在这个类定义中没有太多的内容。
1条答案
按热度按时间gfttwv5a1#
在此处找到声明为“Unique_ptr”的头文件:
https://github.com/zouxiaohang/TinySTL/blob/master/TinySTL/Memory.h
以及
https://github.com/microsoft/STL/blob/main/stl/inc/memory