3
Я пытаюсь бросить auto_ptr опорожнить указатель следующим образом:Casting auto_ptr опорожнить указатель
void *AM::This2Ctx(std::auto_ptr<AMContext> data)
{
return reinterpret_cast<void *>(data);
}
, но я получаю ошибку компиляции:
error: invalid cast from type std::auto_ptr<AMContext> to type void*
как это отливка может быть сделано правильно? и как его можно использовать в обратном направлении?
Спасибо, но используя .get() переместит управление памятью обратно ко мне, не так ли? и как я могу отличить наоборот? – Itzik984
Нет, не будет. Он просто показывает вам адрес. Я думаю, 'static_cast' лучше, чем' reinterpret_cast', вам не нужно такое низкоуровневое кастинг. – deepmax
@ Itzik984 Предупреждение: если вы получаете необработанный указатель от умного указателя, этот указатель не знает вашего оригинального умного указателя. Если вы попытаетесь создать новый умный указатель из этого необработанного указателя позже, вы получите двойное удаление (как исходный, так и новый умный указатель удалит элемент). – Agentlien