Bonjour,
J'ai utilisé le code de Laurent Gomila afin de m'entrainer dans la création d'un moteur 3D, seulement un opérateur surchargé dans la classe Matrix4 entraine un warning:
Voilà l'opérateur incriminé :warning C4717: 'Asce::CMatrix4::operator()'*: récurrent sur tous les chemins d'accès de contrôle, la fonction entraînera un dépassement de capacité de la pile d'exécution
Et le code complet de la classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 inline const float& CMatrix4::operator ()(std::size_t i, std::size_t j) const { return operator ()(i, j); }
Si j'ai bien compris cet opérateur appelle l'opérateur suivant qui lui donne une référence vers les données :
et ensuite au lieu d'appeler celui-ci il se rappelle lui-même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 inline CMatrix4::operator const float*() const { return &a11; }
Je ne vois pas du tout comment corriger le problème, si vous avez une proposition n'hésitez pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 inline float& CMatrix4::operator ()(std::size_t i, std::size_t j) { return operator float*()[i + 4 * j]; }
Merci d'avance.
Partager