Bonjour,
Je dois actuellement chercher à faire quelque chose qui me semble trivial mais qui ne doit pas coller avec les principes du c++ et de l'objet en général.
Je souhaiterais que des méthodes statiques d'une classe parent puissent accéder à des membres statiques redéfinis des classes enfants.
Soit le code suivant:
J'obtiens actuellement l'output suivant:
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 class base { public: static const int CONST1 = 10; static int test(void){ return CONST1; } }; class ext : public base { public: static const int CONST1 = 123; }; int main (int argc, char* argv[]){ std::cout << base::test() << std::endl; std::cout << ext::test() << std::endl; }
Alors que je souhaiterais obtenir10
10
La différence se faisant sur l'appelant de la méthode test() statique.10
123
En PHP il existe les Late Static Bindings (LSB) qui permettent de résoudre différemment la portée suivant que l'on veuille s'adresser à la classe qui déclare la méthode ou celle qui l’appelle. Cela reste bien sur quelque chose de border line vu que les classes parent ne doivent normalement pas maitriser le contenu déclaré dans les classes enfant. Ici je ne fais que des redéfinitions.
Je travaille sous VS2012 CTP de novembre 2012 et affectionne beaucoup C++11.
Merci par avance pour vos lumière et bon week end.
Partager