Вам просто нужно создать класс deleter:
struct BarDeleter {
void operator()(Bar* b) { destroy(b); }
};
и предоставить его как аргумент шаблона в unique_ptr
. Вам все равно придется инициализировать unique_ptr в ваших конструкторах:
class Foo {
public:
Foo() : bar(create()), ... { ... }
private:
std::unique_ptr<Bar, BarDeleter> bar;
...
};
Насколько я знаю, все популярные библиотеки c ++ реализуют это правильно; поскольку BarDeleter
фактически не имеет какого-либо состояния, ему не нужно занимать какое-либо пространство в unique_ptr
.
Моя проблема была решена путем изменения кода ниже
<?php
echo share('test.rar');
function share($sFile)
{
$cfile = new CURLFile($sFile,'file/rar','sample_name');
$request = curl_init('https://file.io/?expires=1m');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
$request,
CURLOPT_POSTFIELDS,
array(
'file' => $cfile
));
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
Return curl_exec($request);
curl_close($request);
}
?>