Je souhaite utiliser std::unique_ptr
en combinaison avec FITAG de FreeImage. Le code dans la plaine C serait:std :: unique_ptr et pointeur vers le pointeur
... load image;
FITAG* tag = NULL;
FreeImage_GetMetadata(FIMD_EXIF_EXIF, bitmap, "Property", &tag);
... do some stuff with tag;
FreeImage_DeleteTag(tag);
... delete image;
Ma tentative avec unique_ptr:
std::unique_ptr<FITAG, void(*)(FITAG*)> tag(NULL, &FreeImage_DeleteTag);
FreeImage_GetMetadata(FIMD_EXIF_EXIF, bitmap, "Property", &tag.get());
qui revient évidemment:
cannot take the address of an rvalue of type 'pointer' (aka 'FITAG *')
Comment pourrais-je résoudre ce problème?
Merci beaucoup d'avance.
Non, FreeImage_GetMetadata attend un FITAG **. – user2970139
Si FreeImage_DeleteTag n'a pas de signature acceptée par unique_ptr, alors écrivez une fonction wrapper qui a une signature nécessaire et qui appelle FreeImage_DeleteTag de façon appropriée. – TheUndeadFish