Salut!
Voici mon problème:
J'ai une classe Interface (pour l'exemple)
que j'implémente avec Implementation (toujours pour l'exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Interface { // cette fonction doit retourner un pointeur vers un objet "copie" qu'elle a crée Interface * getIndependentCopy(); };On remarque que getIndependentCopy de Implementation retourne un pointeur de Implementation et non de Interface, mais le compilo et content et moi aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Implementation : public Interface { Implementation * getIndependentCopy(); }
je voudrais utiliser des shared_ptr pour le retour de getIndependentCopy, pour empecher d'avoir de la mémoire allouée dans la nature, sans personne qui ne s'en occupe. Ce code estmais je reçois alors à la compilation l'erreur "'Implementation ::getIndependentCopy' : overriding virtual function return type differs and is not covariant from 'Interface::getIndependentCopy'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Interface { // cette fonction doit retourner un pointeur vers un objet "copie" qu'elle a crée boost::shared_ptr<Interface> getIndependentCopy(); }; class Implementation : public Interface { boost::shared_ptr<Implementation> getIndependentCopy(); }
Sans doute du au fait que boost::shared_ptr<Implementation> ne dérive pas de boost::shared_ptr<Interface>???
Est ce que quelqu'un saurait comment faire pour résoudre ce problème?
Merci!
Partager