c++ - 如何制作 shared_ptr 列表?

标签 c++ shared-ptr

我面临一个设计问题,可以用以下类来概括:共享缓冲区的链表,其中链接元素是 SharedBuffer

class SharedBuffer : public shared_ptr<Buffer> {
private:
    SharedBuffer    _next;

    SharedBuffer(Buffer* buffer) : shared_ptr<Buffer>(buffer) {}
    ~SharedBuffer() { 
        if (_next)
           _next.reset();
    }
}; 

这个类是错误的,因为它在自己的定义中引用了自己。但就是这个想法。关于制作这样的共享缓冲区列表有什么想法吗?

最佳答案

简短的回答是

你没有

STL里面有很多容器类。 std::vector<> , std::list<>或您正在寻找的任何其他容器。不要自己滚动。请。你只会犯错误,你的时间可以更好地花在处理你的程序逻辑上,而不是调试一些错误的实现,尤其是当好的实现是免费的时候。

std::vector<std::shared_ptr<Buffer>> sharedBuffers;

关于c++ - 如何制作 shared_ptr 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082690/

相关文章:

c++ - 不存在合适的构造函数来从 "dumb pointer"转换为 "smart pointer"

javascript - 如何使用 JavaScriptCore 将 C++ 对象传递给 JavaScript 函数

c++ - 两次释放内存

c++ - find_if 的 Lambda 表达式

c++ - 不严格弱排序比较器的 std::sort 可以用作拓扑排序吗?

c++11 - 我应该如何构造一个要使用 std::shared_ptr 管理的实例?

c++ - 将 std::shared_ptr 隐式转换为类型

c++ - GCC 3.4.6 中与模板函数相关的错误

c++ - C++ 中指针的困难/链接错误

c++ - 弱指针分配失败