我目前正在修改一个复杂的类,它的节点指向自己,就像链表或图一样。我希望它使用boost::interprocess函数在共享内存中使用。现在我正在寻找重新设计它的方法,以使其保持通用并涉及最少的更改。
template< class T >
class node {
public:
T data;
node* prev;
node* next;
};
重新设计应该使用boost::interprocess::allocator分配器,以便隐式使用boost::interprocess::offset_ptr类型的相对智能指针。我认为它应该涉及第二个模板参数,例如
template< class T, class alloc_type = std::allocator< node< T > > >
class node {
public:
T data;
typename alloc_type::pointer prev;
typename alloc_type::pointer next;
};
由于循环依赖,这当然不起作用,就像引用一样。
我希望可以从 C++ 类模板专业人士那里得到一些帮助,了解实现它的最佳方式。我查看了启用了 boost 共享内存的容器,但他们正在以一种涉及多个外部类的相当复杂的方式解决它。
约翰