Bonjour,
J'ai pas trouvé de réponse à mes questions en fouillant sur le web alors je poste sa ici:
J'ai codé avec la fac un header "complex.h" - dont je suis très fier - qui contient une structure Complex ainsi que pleins de fonctions qui me permettent de faire des opérations dessus (j'en met une pour l'exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 struct Complex { float x, y; }; Complex operator+ (Complex c1, Complex c2) { Complex cr; cr.x = c1.x + c2.x; cr.y = c1.y + c2.y; return cr; }
Initialement, j'avais une structure A qui possédait un tableau d'une structure B.
Les deux structures utilisaient le même header, tout fonctionnais parfaitement bien, jusqu’à ce que je me décide à structurer mon programme (tout le code était dans le même fichier) et que je transforme ces structures en classes.
->A et B ont des struct Complex comme attributs et méthodes
Hélas, sa a pas plus a mon compilo:
Dans un premier temps, pour éviter la double définition, j'ai changé le "#include "complex.h"" dans les headers de mes deux classes par une définition plus propre "struct complex;".
J'en ai profité pour décaller mon include dans mon main.
Ensuite ça m'as affiché l'erreur suivante que j'ai pu esquiver en remplaçant les attributs et méthodes de mes classes par des pointeurs : de "Complex m_position" je suis passé à "Complex* m_position"
error: return type 'struct Complex' is incomplete
A ce point la, les accesseurs ont l'air de fonctionner (en tout cas ils compilent) mais je n'arrive pas à utiliser les fonctions qui sont dans mon complexe.h, logique puisque je fait des opérations non plus sur des complexes, mais sur des pointeurs de complexe.
Par contre j'avoue que je ne sais pas comment gérer les pointeurs de cette façon
J'aurais besoins d'un peu d'aide pour faire tourner un programme qui ressemble à ça avec l'aide de l'operator+ que j'ai défini plus haut dans le header:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class B { public: B(); void avancer(); private: Complex* m_position Complex* m_vitesse }; void B::avancer() { this->m_position = this->m_position + this->m_velocite; //j'en profite pour vous demander si le this-> est utile ou non dans ce cas }
Partager