Bonjour à tous.
J'ai une fonction définie comme ce qui suit :
Header :
Template corps :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 namespace Ca { namespace Math { /** Retourne l'angle compris dans l'intervalle [inOrigine, inOrigine + inModulo] * @remarks inModulo peut être négatif */ template< typename T, T inOrigine, T inModulo > T GetRadianAngleModulo( T inRadianAngle ) ; } } #include "Ca/Math.tpp"
Elle est appelée de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template< typename T, T inOrigine, T inModulo > T Ca::Math::GetRadianAngleModulo( T inRadianAngle ) { T aAlpha = std::atan2( std::sin( inRadianAngle ), std::cos( inRadianAngle ) ) ; aAlpha += inModulo ; // http://pubs.opengroup.org/onlinepubs/007904975/functions/fmod.html T aY = inOrigine + inModulo ; return aY ? std::fmod( aAlpha, inOrigine + inModulo ) + inOrigine : aAlpha + inOrigine ; }
Sous Visual express 2008 la compilation et l’exécution se déroule bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 float aResult = Ca::Math::GetRadianAngleModulo<float, 0, 6.2831853071795f>( m_SurfaceNode->getOrientation().getYaw().valueRadians() ) ;
Sous Mingw la compialtion échoue et m'affiche le message suivant :
error: no matching function for call to 'GetRadianAngleModulo(Ogre::Real)'
( Ogre::Real est le type float )
Voici ma version de Mingw :
Peut être qu'il y a une fonction existante pour faire ce travail. Si oui je suis tout même intéresser par la résolution de cette erreur.=== TDM-GCC Compiler Suite for Windows ===
--- GCC 4.4/4.5 Series ---
*** Standard MinGW 32-bit Edition ***
...
REQUIRED BASE:
* gcc-core (gcc-4.5.2-tdm-1-core)
* binutils (binutils-2.21-3-mingw32-bin)
* mingwrt (mingwrt-3.18-mingw32-dev, mingwrt-3.18-mingw32-dll)
* w32api (w32api-3.17-2-mingw32-dev)
Merci d'avance.
Partager