J'ai un projet utilisant la bibliothèque CImg. Ce que je dois faire est de déclarer des classes qui héritent d'une classe de base abstraite appelée shape. Ces classes sont des classes pour les différentes formes (cercle, rectangle .. etc). Ce que je veux faire est d'utiliser une classe struct appelée point pour les différents points dont j'ai besoin pour chaque classe. Ainsi, par exemple, pour une forme de triangle, je dois utiliser trois points pour dessiner un triangle avec chaque point ayant une coordonnée x et une coordonnée y. Alors, voici ce que j'ai obtenu jusqu'ici.C++ structure en tant que membre de données privé
class Shape
{
public:
virtual void draw_shape() = 0;
virtual double area() = 0;
};
struct Point
{
const int x; //const is necessary because CImg drawing functions require them.
const int y;
};
class Triangle : public Shape
{
private:
struct Point first;
struct Point second;
struct Point third;
public:
Triangle();
Triangle(const int, const int, const int, const int, const int, const int);
virtual void draw_shape();
virtual double area();
};
1) Comment initialiser les coordonnées x et y de chaque structure?
Triangle::Triangle() : first.x(0), first.y(0), second.x(0), second.y(0), third.x(0), third.y(0)
ne fonctionne pas
2) est mon constructeur surchargé correct ou devrais-je utiliser ce constructeur:
Triangle(Point, Point, Point);
3) Comment puis-je utiliser les points après chaque fois que je veux dessiner quelque chose ?! 4) La structure est-elle avant d'instancier les Points nécessaires en C++?
Ajouter un constructeur à la structure 'Point'? –
Comment?! Je ne savais même pas que la structure pouvait avoir des constructeurs – Mustafa
La seule différence entre une 'struct' et une' class' en C++, est la visibilité par défaut, pour 'struct' tout est' public' par défaut alors qu'il est 'private' par défaut pour 'class'. C'est tout, sinon ils sont égaux. –