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