J'ai les classes suivantes. Une erreur se produit pendant la boucle for dans la classe Main
. Le compilateur se plaint de la fonction draw
"est de type GLCommand". L'idée de l'application est de stocker de nombreux types de GLCommand
et Shape
dans le même vecteur. Devrais-je adopter une approche de conception différente, ou est-ce une solution simple à ce problème?itération à travers un vecteur de classes abstraites
Interface:
class GLCommand
{
public:
GLCommand();
virtual ~GLCommand();
virtual void draw() = 0;
};
Résumé Classe:
class Shape : public GLCommand
{
public:
Shape(int);
virtual ~Shape();
virtual void draw() {};
private:
double colour[];
int sides;
};
classe dérivée:
class Polygon : public Shape
{
public:
Polygon(int sides);
virtual ~Polygon();
void draw();
private:
vector<Coordinates *> verticies;
};
principal:
int main()
{
vector <GLCommand*> vec;
Polygon p(4);
vec.push_back(&p);
for (vector<GLCommand*>::iterator it = vec.begin(); it!=vec.end(); ++it)
{
*it->draw();
}
return 0;
}
Votre titre de la question ne correspond pas à votre code. Vous avez un vecteur de * pointeurs *, pas de "classes abstraites". –