Bonjour,
voilà mon problème. J'ai une méthode d'une classe déclarée inline. Lorsque j'essaie de l'appeler depuis un autre endroit dans mon programme, le compilateur m'informe qu'il ne la trouve pas, alors j'inclus le fichier qui en contient le code et à ce moment là, à la compilation, il me dit que la méthode est définie deux fois. Comment faire pour les utiliser ???
merci beaucoup pour votre aide.
Gilbert.
voici ci-dessous un petit code qui vous montre mon problème.
Code :
- ///////// fichier a.h
- #ifndef _A_H_
- #define _A_H_
- #include <iostream>
- class A {
- public:
- int getG(void) const;
- protected:
- int g;
- };
- #endif
|
Code :
- /////////// fichier a.cc
- #ifndef _A_CC_
- #define _A_CC_
- #include "a.h"
- #ifndef _A_GETG_
- #define _A_GETG
- inline void A::getG(void) const {
- return g;
- }
- #endif
- #endif
|
Code :
- ///////// fichier b.h
- #ifndef _B_H_
- #define _B_H_
- #include <iostream>
- #include "a.h"
- class B {
- public:
- int touchVar(A variable);
- };
- #endif
|
avec ce b.cc il me dit qu'il ne trouve pas getG()
Code :
- ///////// fichier b.cc
- #ifndef _B_CC_
- #define _B_CC_
- #include b.h
- int B::touchVar(A variable) {
- return = variable.getG();
- }
- #endif
|
et si je modifie b.cc comme ci-dessous, j'aurais une double définition
Code :
- ///////// fichier b.cc
- #ifndef _B_CC_
- #define _B_CC_
- #include b.h
- #ifndef _A_GETG_
- #define _A_GETG
- inline void A::getG(void) {
- return g;
- }
- #endif
- int B::touchVar(A variable) {
- return = variable.getG();
- }
- #endif
|