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 : 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_
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
 
#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 : 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);
}
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