Je dois faire un programme qui classe des individus d'un échantillon dans des classes. Et à chaque individu classé, la classe où il a été classé doit "apprendre".
J'ai donc une classe Sample qui contient un vector de Category, et qui doit pouvoir modifier les Category à chaque fois, voir en créer de nouvelles.
Chaque Category contient une liste de descripteurs (CatDescriptor est une classe abstraite), qui peuvent être de différents types (qualitatifs, quantitatifs, intervalles: CatQualitative, CatQuantitative, CatInterval)
Aussi, mon individu (Sample) possède une liste de descripteurs qui peuvent être de différents types (Qualitative, Quantitative, Interval).
S'il me faut créer une classe parce que mon individu ne correspond à aucune classe existante, je dois créer une Category avec les descripteurs (CatDescriptor) correspondant aux descripteurs de mon individu (Descriptor).
Je parcours donc la liste de mes descripteurs, et en fonction du type de descriptor que j'ai, je crée le catDescriptor correspondant.
J'ai donc essayé d'adapter la méthode des clones à mon problème, et j'ai fait ça:
dans Category.cpp:
dans Descriptor.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void Category::addDescriptor(const Descriptor& i_desc){ CatDescriptor* new_desc=i_desc.clone(); new_desc->initialization(i_desc); m_descList.insert(new_desc); }
Mais j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 virtual CatDescriptor* clone() const =0; dans Quantitative.cpp (par exemple): virtual CatQuantitative* Quantitative::clone () const { return new CatQuantitative(this.getName()); }
et j'ai beau chercher, je n'arrive pas à m'en dépêtrer
Code : Sélectionner tout - Visualiser dans une fenêtre à part error: no matching function for call to 'std::list<CatDescriptor*>::insert(CatDescriptor*&);![]()
Partager