Enfin ils devraient...


Je viens d'intégrer dans un projet Ogre3D une librairie de physique a moi. Problème : des classes ont des noms identiques dans Ogre et dans ma librairie...

Donc hop je me dis super les namespaces vont me sauver la vie!

Oui sauf que... ca ne marche toujours pas...


Comment expliquer ca...


Alors en simplifiant un peu, le fichier Quat.h :
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
#include "Vector3.h"
 
namespace Physix{
 
class Quat {
public:
	double	n;	// partie reelle
	Vector3	v;	// vecteur imaginaire
 
	inline Quat(void);
	inline Quat(double ne, double v1, double v2, double v3);
 
	inline double norme(void) const;
};
 
 
inline	Quat operator+(Quat q1, Quat q2);
 
 
std::ostream &operator<<(std::ostream &sortie, Quat &v);
 
 
}//Physix
 
 
#include "../Code/Quat.inl"
Et le fichier Quat.inl, inclu a la fin de Quat.h :
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
 
namespace Physix{
 
inline Quat::Quat(void){
	n = 0;
	v.x = 0;
	v.y = 0;
	v.z = 0;
}
 
inline bool Quat::isUnit() const{
	return ((n*n + sqrt(v.norme())) >= 1-Constantes::tolerance) ;
}
 
} //Physix
Résultat : au niveau de la methode Physix::Quat::isUnit(), erreur de compil : error C2039: 'norme' : is not a member of 'Ogre::Vector3'

Mon v qui devrait etre un Physix::Vector3 est toujours concidéré comme un Ogre::Vector3

Que faire??? Et en plus ca ne déconne que la car il n'y a pas de methode equivalente dans le Vector3 de Ogre, mais je ne suis du coup meme plus sur que ce sont bien mes fonctions qui seront utilisées


Merci pour vos lumières sur les namespaces, je ne vois pas ce qui m'échappe la...