Сброс unique_ptr в массив символовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сброс unique_ptr в массив символов

Сообщение Anonymous »

Я переношу старую программу C++ на современный C++. Устаревшая программа использует new и delete для динамического распределения памяти. Я заменил new на std::unique_ptr, но при попытке сбросить unique_ptr получаю ошибку компиляции.
Вот урезанная версия программы. Моя цель — избавиться от всего нового.
#include

enum class Types {
ONE,
TWO,
};

// based on type get buffer length
int get_buffer_len(Types type) {
if(type == Types::ONE) return 10;
else if(type == Types::TWO) return 20;
else return 0;
}

int main() {
Types type = Types::ONE;
std::unique_ptr msg{};

auto len = get_buffer_len(type);
if(len > 0) {
msg.reset(std::make_unique(len));
}

// based on type get the actual message
if(type == Types::ONE) {
get_message(msg.get());
}
}

Я получаю следующую ошибку компиляции:
error: no matching function for call to 'std::unique_ptr::reset(std::__detail::__unique_ptr_array_t)'
| msg.reset(std::make_unique(len));
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Подробнее здесь: https://stackoverflow.com/questions/735 ... characters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»