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 :
Et voici le résulat de l'execution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
Dans cet exemple, j'ai 2 fonctions pour l'opérateur [], une qui gère en constante, et l'autre sans constante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ ./test_priority No const No const 100 Const 100
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.
Partager