Bonjour,

J'ai créé deux classes :
- une classe Matrix33
- une classe Vector3D.

Je souhaite créer à partir d'un Vector3D et d'un double une Matrix33.

Voici le code qui fonctionne en passant des "double" en argument du constructeur :

dans Vector3D.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 
	//Matrix33 M(axis,rotation_angle); // axis de classe Matrix33 et rotation_angle de type double
	Matrix33 M(xa, ya, za, rotation_angle); // 4 de type double
dans Matrix33.cpp
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
//Matrix33::Matrix33(Vector3D axis, double rotation_angle)
Matrix33::Matrix33(double xa, double ya, double za, double rotation_angle)
{
	double c;
	double s;
	//double xa;
	//double ya;
	//double za;
 
	//xa = axis.GetX();
	//ya = axis.GetY();
	//za = axis.GetZ();
 
	c = cos(rotation_angle);
	s = sin(rotation_angle);
 
	x1 = xa*xa + (1-xa*xa) * c;		
	x2 = xa*ya * (1-c) - za * s;		
	x3 = xa*za * (1-c) + ya * s;
	y1 = xa*ya * (1-c) + za * s;	
	y2 = ya*ya + (1-ya*ya) * c;			
	y3 = ya*za * (1-c) - xa * s;
	z1 = xa*za * (1-c) - ya*s;		
	z2 = ya*za * (1-c) + xa * s;		
	z3 = za*za + (1-za*za) * c;
bien sûr, je souhaiterais passer un Vector3D en argument plutôt que trois doubles. Dans ce cas, j'obtiens l'erreur :
error C2061: erreur de syntaxe*: identificateur 'Vector3D'

Pourtant, intellisense reconnaît Vector3D.

Quelqu'un a une explication ?
Merci

A ce propos, dans Vector3D.h, j'ai #include "Matrix33.h"
et dans Matrix33.h, j'ai #include "Vector3D.h"
ça choque quelqu'un ?