Surcharge operateur () et const
Bonjour,
Je viens de trouver ce code source:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| template<class T> inline T& Matrix4<T>::operator ()(size_t i, size_t j)
{
return operator T*()[j * 4 + i];
}
template<class T> inline const T& Matrix4<T>::operator ()(size_t i, size_t j) const
{
return operator ()(i, j);
}
template<class T> inline Matrix4<T>::operator T*()
{
return &a11;
}
template<class T> inline Matrix4<T>::operator const T*() const
{
return &a11;
} |
Il y a deux fois la même fonction avec "const" et sans "const". Quand est-ce que le compilateur va choisir l'une ou l'autre ?
Ou est-ce peut-être une erreur de programmation ? Dans ce cas pourquoi le compilateur ne l'interdit pas ?
J'ai l'impression que ma deuxième méthode me fait un seg fault et je crois qu'elle essaye de s'appeler elle même à l'infini mais je ne suis pas certain. Est-ce possible ?
Merci d'avance.