Я пытаюсь создать объект потока памяти для записи в блок памяти, как если бы это был файл (используя удобную функциональность, предоставляемую std :: istream). Основная идея состоит в том, чтобы создать несколько оберток для класса std :: streambuf. * 1001 *
Кажется, проблема в том, что я неправильно использую конструктор std :: istream. C ++ жалуется, что ссылается на удаленную функцию.
Я не совсем уверен, что не так с синтаксисом.
inputStream.h
struct IMemBuf : std::streambuf
{
IMemBuf(const char* base, size_t size);
};
struct IMemStream : virtual IMemBuf, std::istream
{
IMemStream(const char* base, size_t size);
};
inputStream.cpp
IMemBuf::IMemBuf(const char* base, size_t size)
{
char* p(const_cast<char*>(base));
this->setg(p, p, p + size);
}
IMemStream::IMemStream(const char* base, size_t size) : IMemBuf(base,size), std::istream(static_cast<std::streambuf*>(this))
{
}
Точное сообщение об ошибке:
'IMemStream :: IMemStream (const IMemStream&) ': попытка сослаться на удаленную функцию