Здравствуйте, Hard_Club, Вы писали:
H_C>Что делать есть либа требует передачи в функцию raw поинтера и освобождения его в callback — никак его в smart pointer не завернешь.
В предположении однопоточности либы:
Построить глобальный мап, типа:
std::map<T*, std::shared_ptr<T> g_map;
перед передачей указателя в либу делать:
std::shared_ptr<MyObject> pObj = ...
g_map[pObj.get()] = pObj;
LibApiFunction(pObj.get());
в callback удалять из мапа:
SomeCallback(MyObject* ptr)
{
g_map.erase(ptr);
}