【发布时间】:2018-09-06 08:28:31
【问题描述】:
我有一个想要存储在共享内存中的递归数据结构。到目前为止,我已经得到了这个(简化):
using namespace boost::interprocess;
typedef allocator<wchar_t,
managed_shared_memory::segment_manager>TCharAllocator;
typedef basic_string<wchar_t, std::char_traits<wchar_t>, TCharAllocator> MyShmString;
class Node;
template<>
struct sizeof_value<Node>
{
static const std::size_t value = *NodeSize*; <---??
};
typedef private_node_allocator<Node, managed_shared_memory::segment_manager> TNodeAllocator;
class Node
{
private:
MyShmString _value;
vector<Node, TNodeAllocator> _children;
};
如果您为 Nodesize 填写一个数字,它会编译并运行。您可以通过编译和打印 sizeof(Node) 来获得此数字。这不是很健壮。我尝试使用返回节点大小的前向声明的 constexpr 函数,但这不能编译(在 MSVC 上)。 有没有其他方法可以解决这个问题?
【问题讨论】:
标签: boost shared-memory recursive-datastructures