Alors, j'ai du mal à comprendre mon problème, et encore plus à mettre en place un workaround simple. Donc je vais vous expliquer ce que j'essaye de faire, et vous me direz ce qui se passe exactement

J'ai une classe Classe, qui contient un pointeur vers une Interface. De cette interface dérivent des DérivésdInterface, qui implémentent toutes les méthodes de l'interface.
Ce que je n'arrive pas à faire, c'est à écrire le constructeur de copie de Classe, parce que je ne sais pas comment faire une recopie profonde d'une classe dérivée d'une interface

Ca donne ça :
classe.hpp
#include "interface.hpp"
class Classe
{
public
Classe();
Classe(const Classe& classe);
private:
Interface* interface;
};
Et ça donne :
classe.cpp
#include "classe.hpp"
#include "deriveedinterface_1.hpp"
#include "deriveedinterface_2.hpp"
#include "..."
Classe::Classe():
interface(nullptr)
{}
Classe::Classe(const Classe& classe):
membre1(classe.getMembre1),
membre2(classe.getMembre2),
....
interface(classe.??????????????????????????????)
{
...
}
J'ai eu l'idée (apparemment mauvaise ^^) de créer un "constructeur de copie virtuel" pour l'interface, qui se serait démerdé pour appeler le bon constructeur de copie, mais c'est interdit.
J'ai essayé d'ajouter une méthode copy() à DérivédInterface, mais j'ai des membres à copier dans l'interface, et dans ses dérivés, et j'arrive pas à faire un truc de propre sans getters qui exposent la totalité des membres privés de l'interface, bref c'et dégueulasse.
Donc voilà, je sais pas comment m'y prendre dans ce cas de figure, quelle est la bonne façon de procéder.
Merci d'avance pour vos lumières. ^^