Warning lors de la surcharge de l'opérateur ()
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:
Citation:
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
Voilà l'opérateur incriminé :
Code:
1 2 3 4 5
|
inline const float& CMatrix4::operator ()(std::size_t i, std::size_t j) const
{
return operator ()(i, j);
} |
Et le code complet de la classe.
Si j'ai bien compris cet opérateur appelle l'opérateur suivant qui lui donne une référence vers les données :
Code:
1 2 3 4
| inline CMatrix4::operator const float*() const
{
return &a11;
} |
et ensuite au lieu d'appeler celui-ci il se rappelle lui-même :
Code:
1 2 3 4
| inline float& CMatrix4::operator ()(std::size_t i, std::size_t j)
{
return operator float*()[i + 4 * j];
} |
Je ne vois pas du tout comment corriger le problème, si vous avez une proposition n'hésitez pas.
Merci d'avance.