héritage et méthodes virtuelles ? - C++ - Programmation
Marsh Posté le 08-12-2007 à 13:27:29
Salut,
Les classes virtuelles abstraites ne peuvent s'utiliser que par un pointeur, et lors de leur création, tu ne peux créer qu'une de leur classes dérivées.
Marsh Posté le 08-12-2007 à 13:31:25
IrmatDen a écrit : Salut, |
... ou par une reference.
Marsh Posté le 08-12-2007 à 17:04:07
void setPointsList(vector<Point*> &vec) peut pas faire de mal.
par contre tes:
GeometricShape();
GeometricShape(const GeometricShape& gs){};
GeometricShape& operator=(const GeometricShape& gs){} ;
n'ont pas de sens, il vaut mieux un:
vitrual GeometricShape *clone() = 0;
Marsh Posté le 08-12-2007 à 22:06:00
les ;
Mais effectivement, ça sert à rien de les définir ici, surtout comme ça.
Marsh Posté le 09-12-2007 à 09:23:13
Un destructeur virtuel ça peut être bien aussi non ?
Je sais pas ce qu'il y a au niveau de GeometricShape mais je pense que ça peut pas faire de mal...
Marsh Posté le 09-12-2007 à 11:34:10
Amonchakai a écrit : Un destructeur virtuel ça peut être bien aussi non ? |
il y est le destructeur virtuel au niveau de GeometricShape. Je ne vois pas ce que tu veux dire...
Marsh Posté le 09-12-2007 à 14:02:15
ha oui, pardon j'avais mal lu...
Par contre j'aurai aussi mis virtuel le destructeur d'Ellipse
Marsh Posté le 08-12-2007 à 11:54:30
Bonjour,
J'ai un problème concernant l'héritage.
En effet, je désire avoir une classe GEometric Shape virtuelle et 2 sous classes Ellipse et Polygon.
J'ai crée cette classe virtuelle pour pouvoir utiliser ce type générique par ailleurs. par exemple j'aimerai pouvoir avoir un vecteur de GeometricShape dans une autre classe.
Voici le code de mes classes :
Classe GeometricShape :
Classe Polygon :
Classe Ellipse :
Quand je veux utiliser un attribut Geometric Shape dans une autre classe, j'ai l'erreur suivante :
Object.h:18: error: cannot declare parameter `pos' to be of type `sys::Geometric
Shape'
Object.h:18: error: because the following virtual functions are abstract:
GeometricShape.h:17: error: virtual void sys::GeometricShape::setPointsList(std
::vector<sys:: Point*, std::allocator<sys:: Point*> > )
extrait de ma classe Object :