Bonjour à tous,
Malgré mes recherches, je n'ai pas trouvé la solution précise à mon problème. J'ai bien trouvé quelques pistes s'en rapprochant, mais je ne les ai pas très bien comprises.
Mon but est d'implémenter une méthode random "static int random(int)", privée, à l'intèrieur de ma classe "MyObject". Cette méthode utilise la fonction random "long random()" de la librairie standard.
voila le code:
MyObject.h
MyObject.cpp
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 #ifndef MYOBJECT_H_ #define MYOBJECT_H_ class MyObject { private: int _id; public: MyObject(); private: static int random(int); }; #endif // MYOBJECT_H_
main.cpp (sait-on jamais :p)
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 #include <stdlib.h> #include "MyObject.h" MyObject::MyObject() { // appel de la methode MyObject::random _id = random(42); } int MyObject::random(int max) { // appel de la fonction random de la lib standard return ((int)(random() % max)); }
Qui me donne le message d'erreur suivant à la compil' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "MyObject.h" int main(void) { MyObject foo(); return (0); }
> In static member function `static int MyObject::random(int)':
> error: no matching function for call to `MyObject::random()'
> note: candidates are: static int MyObject::random(int)
Je n'ai pas trouvé la manière de dire que la fonction qui doit être appelée, est celle de la librairie standard et non la méthode. La signature de la fonction ne suffisant apparement pas.
Merci d'avance pour votre aide
Partager