Bonjour,

Ma question est une question plutôt de "bonne pratique".

Lorsqu'on manipule un pointeur d'interface que l'on passe entre différente classes, à qui appartient la responsabilité du delete ?

Prenons cette exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void aMethod()
{
Interface* i = new Implementation();
m_member.setSomething(i); //m_member est un membre de classe
}
  • On ne peut pas delete juste apres le SetSomething, car l'objet membre peut avoir besoin de l'interface plutard dans d'autres méthodes.
  • L'objet m_member ne peut pas delete un objet qu'il ne crée pas.


Je vois deux solutions mais qui me semble trop "lourde".
  1. Les smart pointers
  2. Un wrapper (encapsulant un pointeur d'interface)


Que me conseillez-vous ? Solution 1, 2 ou une autre que je ne connais pas ?

Merci de me faire part de vos expériences