Dans l'espoir de simplifier un problème de devoirs traitant de l'héritage, j'ai pensé qu'il pourrait être préférable d'utiliser le polymorphisme pour accomplir la tâche. Ce n'est pas obligatoire, mais cela a beaucoup plus de sens si c'est possible. Cependant, je reçois des erreurs de symboles qui font que cela fonctionne comme je le pensais ou simplement la définition de la classe de base. Je veux que la fonction surchargée soit basée sur l'objet à appeler.Les modèles enfants peuvent-ils être stockés dans un tableau de classes de base et utiliser une fonction virtuelle surchargée?
template <class T>
class Fruit {
private:
int count;
T type;
public:
virtual void Info();
};
template <class T>
class Apple : public Fruit<T> {
private:
int variety;
public:
void Info();
};
// more fruit-child classes
vector<Fruit<int> > fruits; // contains object of various derived types
...
for(int i=0; i<fruits.size(); i++
fruits[i].Info();
Quel est le but du type? Si c'est un champ de type, vous n'en avez probablement pas besoin du tout. – JoshD
Votre vecteur de Fruit devrait être un vecteur de 'Fruit *', sinon vous aurez des problèmes de tranchage. – JoshD
Quel est le problème que vous essayez de résoudre? Quelle est la motivation de lancer * à la fois * le polymorphisme à la compilation (templates) * et * le polymorphisme à l'exécution (inheritance)? – Arun