Я пишу класс, который записывает данные в терминал из сокета. Чтобы протестировать некоторые из моих методов, у меня есть метод установки для одной из моих переменных класса, которая оказывается объектом std::stringbuf
. При попытке назначить новый объект экземпляру класса, мой редактор показывает ошибку в назначении. Для ясности, вот мой прототип класса:
class MainServer : BaseServer
{
public:
MainServer();
void setByteBuffer(std::stringbuf);
private:
int valread;
std::stringbuf byteBuffer;
void dataRead();
void terminalWrite();
};
Метод, который доставляет мне неприятности, setByteBuffer
, реализация:
void MainServer::setByteBuffer(std::stringbuf testByteBuffer)
{
byteBuffer = testByteBuffer;
}
Ошибка, которую дает мне редактор is:
std::stringbuf &std::stringbuf::operator=(const std::stringbuf &)
+1 overload
@brief %Vector assignment operator.
@param __x A %vector of identical element and allocator types.
All the elements of @a __x are copied, but any unused capacity in
@a __x will not be copied.
Whether the allocator is copied depends on the allocator traits.
function "std::__cxx11::basic_stringbuf<_CharT, _Traits, _Alloc>::operator=(const std::__cxx11::basic_stringbuf<_CharT, _Traits, _Alloc> &) [with _CharT=char, _Traits=std::char_traits<char>, _Alloc=std::allocator<char>]" (declared at line 140 of "/usr/include/c++/9/sstream") cannot be referenced -- it is a deleted function
Кажется, что конструктор присваивания (то есть копирования) для класса stringbuf
не подходит для того, что я пытаюсь сделать. Как можно это исправить? Я предположил, что одним из решений является использование stringbuf *
, но это кажется плохой идеей, поскольку в любом случае это будет использоваться только для целей тестирования.