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 :
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
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"
Résultat : au niveau de la methode Physix::Quat::isUnit(), erreur de compil : error C2039: 'norme' : is not a member of 'Ogre::Vector3'
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
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...
Partager