Bonjour.

Pour m'entraîner à manipuler les classes, j'ai voulu créer un système de coordonnées selon le code qui suit:
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef Def_Repere
#define Def_Repere
#include<math.h>
class Cylin;
class Spher;
class Carth //coordonnées carthésiennes
{
	double X;
	double Y;
	double Z;
public:
	Carth(double x=0,double y=0,double z=0)//entree des coordonées
	{
		X=x;
		Y=y;
		Z=z;
	}
	Carth(Carth &point)//copie d'un autre point
	{
		X=point.X;
		Y=point.Y;
		Z=point.Z;
	}
	Carth(Cylin &point);//convertion cylindriques->carthesiennes
	Carth(Spher &point);//convertion spheriques->carthesiennes
	friend Cylin::Cylin(Carth &point);
	friend Spher::Spher(Carth &point);
	double GetCoord(int num=1);
};
 
class Cylin //coordonnées cylindriques
{
	double r;
	double Theta;
	double Z;
public:
	Cylin(double R=0,double theta=0,double z=0)//entree des coordonées
	{
		r=R;
		Theta=theta;
		Z=z;
	}
	Cylin(Cylin &point)//copie d'un autre point
	{
		r=point.r;
		Theta=point.Theta;
		Z=point.Z;
	}
	Cylin(Carth &point);//convertion carthesiennes->cylindriques
	Cylin(Spher &point);//convertion spheriques->cylindriques
	friend Carth::Carth(Cylin &point);
	friend Spher::Spher(Cylin &point);
	double GetCoord(int num=1);
};
 
class Spher //coordonnées sphériques
{
	double r;
	double Theta;
	double Phi;
public:
	Spher(double R=0,double theta=0,double phi=0)//entree des coordonées
	{
		r=R;
		Theta=theta;
		Phi=phi;
	}
	Spher(Spher &point)//copie d'un autre point
	{
		r=point.r;
		Theta=point.Theta;
		Phi=point.Phi;
	}
	Spher(Carth &point);//convertion carthesiennes->Spheriques
	Spher(Cylin &point);//convertion carthesiennes->Spheriques
	friend Carth::Carth(Spher &point);
	friend Cylin::Cylin(Spher &point;
	double GetCoord(int num=1);
};
 
#endif
d'ou je ne vois pas trop les erreurs
or le compilateur me lance alors une bordée d'injures dés que j'essaye de compiler (je n'ai mis que le debut, il me sort 104 erreurs):
Citation Envoyé par Le Compilateur
------ Début de la génération : Projet : Moteur physique, Configuration : Debug Win32 ------
Compilation en cours...
convert.cpp
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(26) : error C2027: utilisation du type non défini 'Cylin'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(4) : voir la déclaration de 'Cylin'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(26) : error C2256: utilisation non conforme du spécificateur friend sur 'Carth::Carth'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(27) : error C2027: utilisation du type non défini 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(5) : voir la déclaration de 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(27) : error C2256: utilisation non conforme du spécificateur friend sur 'Carth::Carth'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(50) : error C2143: erreur de syntaxe : absence de ')' avant '&'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(50) : error C2143: erreur de syntaxe : absence de ';' avant '&'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(50) : error C2460: 'Cylin::Spher' : utilise 'Cylin', en cours de définition
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(32) : voir la déclaration de 'Cylin'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(50) : error C2059: erreur de syntaxe : ')'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(50) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(52) : error C2027: utilisation du type non défini 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(5) : voir la déclaration de 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(52) : error C2256: utilisation non conforme du spécificateur friend sur 'Cylin::Cylin'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(75) : error C2143: erreur de syntaxe : absence de ')' avant '&'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(75) : error C2143: erreur de syntaxe : absence de ';' avant '&'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(75) : error C2460: 'Spher::Cylin' : utilise 'Spher', en cours de définition
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(57) : voir la déclaration de 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(75) : error C2059: erreur de syntaxe : ')'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(75) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(77) : error C2061: erreur de syntaxe : identificateur 'Spher'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(77) : error C2143: erreur de syntaxe : absence de ')' avant ';'
d:\dossiers & prog\programation\c\c++\init\moteur physique\moteur physique\points.h(77) : error C2245: fonction membre 'Cylin::{ctor}' inexistante spécifiée en tant que friend (la signature de la fonction membre ne correspond à aucune surcharge)
...
La plupart de ces erreurs portent sur les fonctions friend: il me dit que les constructeurs ne peuvent pas être définis comme friend, seulement il me semblais que ce n'étais pas valable pour les constructeurs d'autres classes.
enfin, je ne crois pas qu'il soit pertinent de mettre ces classes amies...

merci