Я использую libev, который требует преобразования моих данных в void *, чтобы соответствовать их предопределенным структурам. Мне нужно привести boost :: shared_ptr к void *, а затем привести void * обратно к boost :: shared_ptr. Вот мой код для этого
void foo(boost::shared_ptr<string>& a_string)
{
void* data = (void*)a_string.get();
boost::shared_ptr<string> myString((string*)data);
}
Я почти уверен, что это работает нормально, однако способ настройки моего кода, я считаю, что все ссылки shared_ptr на мою строку выходят за рамки, поскольку этот метод приведения не увеличивает use_count и, таким образом, shared_ptr освобождает память, пока все еще нужно.
Есть ли способ увеличить / уменьшить значение use_count вручную? В идеале я увеличил бы значение use_count, когда произвел приведение к void *, передал бы свой void * другой функции, вернул void * обратно в shared_ptr и уменьшил бы use_count.
Или, если кто-то знает другое решение этой проблемы, я мог бы использовать любую помощь.