Const et priorité de fonction
Bonjour à tous,
J'ai un petit soucis d'ordre technique auquel je ne trouve pas de réponses sur le net.
J'aimerai gérer la priorité des fonctions dans une classe. Ça sera plus simple à expliquer avec l'exemple suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream>
class Test
{
private:
int a[255] ;
public:
inline int& operator[](int index) { printf("No const\n"); return a[index]; }
inline const int& operator[](int index) const { printf("Const\n"); return a[index]; }
} ;
int main()
{
Test x ;
x[0] = 100 ;
printf("%i\n", x[0]) ;
printf("%i\n", ((const Test)x)[0]) ;
return 0 ;
} |
Et voici le résulat de l'execution :
Code:
1 2 3 4 5 6
| $ ./test_priority
No const
No const
100
Const
100 |
Dans cet exemple, j'ai 2 fonctions pour l'opérateur [], une qui gère en constante, et l'autre sans constante.
Dans le cadre d'un développement d'API, j'aimerai faire en sorte que, par défaut, ce soit la fonction constante qui soient appelé. SAUF quand on s'en sert pour une affectation.
En gros, j'aimerai que x[0]=100 appelle la fonction non constante, et printf("%i\n", x[0]) la fonction constante, sans pour autant devoir caster comme dans le second printf.
Est-ce possible ??
Merci beaucoup. :?