Conflit fonctions C / C++

Conflit fonctions C / C++ - C++ - Programmation

Marsh Posté le 08-04-2005 à 16:53:53    

Salut,
 
Voilà j'ai un petit poblème que je vois pas trop comment resoudre ..
J'ai une classe A dans laquelle j'ai entre autre deux fonctions membres :
 

Code :
  1. class A {
  2. ...
  3. public:
  4.   void open (const char* name, int base);
  5.   void close ()
  6. ...
  7. };


 
Mon problème c'est que dans la fonction A::open je fais appel à la fonction open de l'API système Linux et que le compilateur (gcc 3.3.5, celui par defaut sous Debian unstable) ne veut pas utiliser la fonction open de l'API système mais bien celle de ma classe A ...
Je sais pas comment indiquer au compilateur de pas utiliser l'open de ma classe mais bien celui qui provient de la bibliothèque C ..
J'ai le même problème avec close, quand je veux utiliser le close de l'API système le compilo m'envoie bouler parce qu'il n'a pas de fonction close avec un paramètre (le descripteur de fichier), il ne connait que le close de ma classe A.
 
Je précise que les includes sont bons puisque si je renomme mes fonctions A::open et A::close, ca se passe bien, ca compile et ca marche \o/.
C'est d'ailleurs la seule solution que j'ai pour le moment.
Le problème c'est que y'a plein de fichiers qui utilisent ces fonctions et que j'ai pas envie de devoir tout modifier.
 
Stagiaire qui reprend du code dégueu powa :(
 
Merki.


Message édité par Bi$cotte le 08-04-2005 à 16:54:55
Reply

Marsh Posté le 08-04-2005 à 16:53:53   

Reply

Marsh Posté le 08-04-2005 à 17:06:12    

Bah tu utilises le namespace global.  
 
 

Code :
  1. // Donc soit tu fais un:
  2. using ::open; // (je suis pas sûr que ça marche)
  3. //Soit tu les appelles directement comme ça:
  4. ::open(bidule);


Reply

Marsh Posté le 08-04-2005 à 17:19:32    

Wouaillle [:iorili]
Ben merci beaucoup c'était pas plus compliqué que ça [:petrus75]
L'appel :
 

Code :
  1. ::open (...)


ça marche.
 
Merci beaucoup Lam's  
 
Je savais pas qu'on pouvait appeler le namespace global comme ça, honte a moi :o

Reply

Sujets relatifs:

Leave a Replay

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