surcharge d'une fonction par une methode
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
Code:
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_ |
MyObject.cpp
Code:
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));
} |
main.cpp (sait-on jamais :p)
Code:
1 2 3 4 5 6 7 8
|
#include "MyObject.h"
int main(void)
{
MyObject foo();
return (0);
} |
Qui me donne le message d'erreur suivant à la compil' :
> 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 :D