Passage de pointeur d'interface entre classes.
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:
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".
- Les smart pointers
- 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 :)