简而言之,我的问题是:如果你有类,MyClass<T>
你怎么能改变类定义来支持你有的情况MyClass<T, Alloc>
,类似于 STL 向量提供的方式。
我需要这个功能来支持共享内存的分配器。具体来说,我正在尝试在共享内存中实现一个环形缓冲区。目前它有以下ctor:
template<typename ItemType>
SharedMemoryBuffer<ItemType>::SharedMemoryBuffer( unsigned long capacity, std::string name )
其中ItemType
是要放置在缓冲区每个槽中的数据的类型。
现在,当我从主程序创建缓冲区时,这非常有用
SharedMemoryBuffer<int>* sb;
sb = new SharedMemoryBuffer<int>(BUFFER_CAPACITY + 1, sharedMemoryName);
但是,在这种情况下,缓冲区本身不是在共享内存中创建的,因此其他进程无法访问。我想做的是能够做类似的事情
typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
typedef SharedMemoryBuffer<int, ShmemAllocator> MyBuffer;
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
MyBuffer *mybuf = segment.construct<MyBuffer>("MyBuffer")(alloc_inst);
但是,我不知道如何将显式分配器添加到类模板中。