我有一个分配器,它根据实例变量MemoryContext
分配内存。我尝试为这种分配器创建std::string
。标题看起来像这样
class String {
private:
std::basic_string< char
, std::char_traits<char>
, MemoryContextAllocator<char> > my_string;
public:
explicit String( MemoryContext* memoryContext );
~String();
MemoryContextAllocator<char> getAllocator() const;
};
来源看起来像这样
String::String(MemoryContext* memoryContext)
:my_string( MemoryContextAllocator<char>(memoryContext) )
{
}
String::~String() {
}
在编译期间,我收到类似这样的错误
/ usr / include / c ++ / 4.8 / bits / basic_string.tcc:156:27:错误:没有匹配函数来调用“
MemoryContextAllocator<char>::MemoryContextAllocator()
”
它试图在没有参数的情况下调用allocator的构造函数。如果我不想引入这个默认构造函数并使用setter,我该如何解决这个问题?