problème avec des méthodes inline

problème avec des méthodes inline - C++ - Programmation

Marsh Posté le 09-05-2007 à 21:35:17    

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 :
  1. ///////// fichier a.h
  2. #ifndef _A_H_
  3. #define _A_H_
  4. #include <iostream>
  5. class A {
  6. public:
  7.   int getG(void) const;
  8. protected:
  9.   int g;
  10. };
  11. #endif


 

Code :
  1. /////////// fichier a.cc
  2. #ifndef _A_CC_
  3. #define _A_CC_
  4. #include "a.h"
  5. #ifndef _A_GETG_
  6. #define _A_GETG
  7. inline void A::getG(void) const {
  8.    return g;
  9. }
  10. #endif
  11. #endif


 

Code :
  1. ///////// fichier b.h
  2. #ifndef _B_H_
  3. #define _B_H_
  4. #include <iostream>
  5. #include "a.h"
  6. class B {
  7. public:
  8.   int touchVar(A variable);
  9. };
  10. #endif


 
avec ce b.cc il me dit qu'il ne trouve pas getG()

Code :
  1. ///////// fichier b.cc
  2. #ifndef _B_CC_
  3. #define _B_CC_
  4. #include b.h
  5. int B::touchVar(A variable) {
  6.   return = variable.getG();
  7. }
  8. #endif


 
et si je modifie b.cc comme ci-dessous, j'aurais une double définition

Code :
  1. ///////// fichier b.cc
  2. #ifndef _B_CC_
  3. #define _B_CC_
  4. #include b.h
  5. #ifndef _A_GETG_
  6. #define _A_GETG
  7. inline void A::getG(void) {
  8.    return g;
  9. }
  10. #endif
  11. int B::touchVar(A variable) {
  12.   return = variable.getG();
  13. }
  14. #endif

Message cité 1 fois
Message édité par abaddon2002 le 09-05-2007 à 21:37:39
Reply

Marsh Posté le 09-05-2007 à 21:35:17   

Reply

Marsh Posté le 09-05-2007 à 21:37:06    

a priori le sujet a été abordé => fonction recherche


---------------
Töp of the plöp
Reply

Marsh Posté le 10-05-2007 à 09:32:35    

abaddon2002 a écrit :


inline void A::getG(void) {
   return g;
}
#endif
 
int B::touchVar(A variable) {
  return = variable.getG();
}
#endif
 
[/cpp]

[:quoted]Apprends le C++ un minimum avant d'aller plus loin.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed