comment utiliser une méthode statique dans une méthode d'une autre classe?
Bonjour a tous,
Voici mon problème :
Dans ma bibliothèque "sylib.h":
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #...
class menu {
public:
static void entete(void);
static void menu1(void);
}
class tube {
public:
void montrer_tube(void);
private:
//données tube
} |
Dans "menu.cpp":
Code:
1 2 3 4 5 6 7 8
| inline void menu::entete()
{ // mon entete }
void menu::menu1()
{
menu::entete(); //ne pose aucun problème
//contenu menu1
...
} |
Dans "tube.cpp":
Code:
1 2 3 4 5 6
| void tube::montrer_tube()
{
menu::entete(); //Error : Unresolved external...
//affichage des careactéristiques du tube
...
} |
J'ai défini chaque fonctions dans exactement un fichiers source (tube.cpp pour la classe tube et menu.cpp pour la classe
menu) (cf faq c++).
J'ai essayé de sortir entete de la classe menu ( void entete(void); ) et de définir normalement dans menu.cpp :
void entete void()
{...}
mais j'ai toujours la meme erreur:
*)
Dans "tube.cpp":
Code:
1 2 3 4 5 6
| void tube::montrer_tube()
{
entete(); //Error : Unresolved external...
//affichage des careactéristiques du tube
...
} |
J'ai lu : "Attention, les fonctions static sont des fonctions dont la portée n'est que dans le fichiers où elles se trouvent." et en effet je ne peux utiliser menu::entete(); que dans menu.cpp où elle est définie.
Mais ça devrait être différent pour la simple fonction entete(); ( cf *) ).
Je ne peux pas non plus appeller dans l'ordre
tube mon_tube
menu::entete(); //ou entete();
mon_tube.montrer_tube();
dans mon programme principal.
Je voudrais afficher l'entete avant d'afficher le tube, mais je n'y arrive pas et je tourne en rond.
Il doit y avoir une astuce simple, pourriez vous me dire comment faire svp?