std::unique_ptr
- это не копируемый объект.Если вам нужен доступ только для чтения, у вас есть два (основных) варианта:
Вернуть ссылку на unique_ptr
:
const std::unique_ptr<unsigned char[]>& getBuffValue() const
{
return _buff;
}
Вернуть постоянный указатель на управляемый массив:
const unsigned char* getBuffValue() const
{
return _buff.get();
}
Чтобы назначить строку в буфер, вы можете сделать:
void setBuffValue(const std::string& str)
{
_buff = std::make_unique<unsigned char []>(str.length() + 1);
std::copy_n(str.c_str(), str.length() + 1, _buff.get());
}
Обратите внимание, что вы должны скопировать завершающий нулевой символ в ваш буфер.Иначе он будет почти бесполезен для внешнего мира, потому что его длина не будет известна пользователю.
Но вам действительно нужно std::unique_ptr<unsigned char[]>
?std::vector
здесь более уместно.