Les namespace sont nos amis....
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:
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:
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...