Полезностьshared_ptr в интерфейсе CC++

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

Сообщение Anonymous »

Я новичок в проекте C++(20); что такое библиотека. Он предоставляет простой интерфейс C для связывания с другими языками. Интерфейс C заполнен обертками типа:

Код: Выделить всё

struct wrapper_object {
template  wrapper_object(Args&&... args) : m_internal (std::forward(args)... ) {}
std::shared_ptr < real_object> m_internal;
}

// simplified
int new_wrapper_object(wrapper_object** out)
{
auto wrapper = make_unique();
wrapper->m_internal = make_shared();
*out = wrapper.release();
return 0;
}

int delete_wrapper_object(wrapper_object* self)
{
delete self;
}
Я не понимаю цели этого. Клиентский код, очевидно, не может реализовать семантику Shared_ptr, поэтому единственный подсчет ссылок выполняется на стороне C++. Но мы только что сделали новый умный указатель из ничего? На стороне C++ нет никого, с кем можно было бы разделить право собственности?
Я считаю, что это должен быть либо unique_ptr (когда Клиент фактически управляет временем жизни через delete_wrapper_object), ИЛИ даже простой тупой указатель (когда Клиент имеет ссылку только для чтения, когда библиотека не предоставляет соответствующую функцию delete_..).
(Я оставляю в стороне "make_unique" ... шаблон Release()", который также является странной маскировкой для "нового")

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

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

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

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

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

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