C/C++ appel de méthode en C

Fermé
Nashouille - 12 avril 2005 à 18:20
 SKZ81 - 16 avril 2005 à 01:26
Bonjour,

Je suis en train de modifier des fichiers en C pour construire une classe C++. J'ai donc transformé la plupart des fonctions C du fichier et je les ai inclus dans une classe. A priori à l'intérieur du même fichier il ne semble pas y avoir de soucis.
Mais le problème c'est qu'un autre fichier C essaie d'appeler une des fonctions que j'ai mis dans ma classe, qui est donc devenu une méthode. Et bien sur elle ne la trouve pas. Ca me semble assez logique qu'elle ne le trouve pas mais ça m'arrange pas du tout.
D'où ma question comment appeler une méthode C++ dans une fonction C?

6 réponses

Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
12 avril 2005 à 18:30
heu j vais peu etre dire une connerie mais cela me parait impossible puisque c n'a aucune idée de ce qu'est une methode.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 avril 2005 à 19:39
lol,

Les canard sont de plus en plus pointilleux de nos jours...

Faut éventuelement passer par une instance de ta classe, non ?(si c comme en java !). Ou alors c'est que tu es trop flémard pour comprendre le programme que tu recopie, sinon tu aurais déjà changé celui-ci de manière à ce que ca marche, ;)

++
0
Salut =)

Oui, c'est comme en Java, il est nécessaire de passer par une instance, mais tu peux nous dire quelle est l'erreur de ton compilo exactement ? parce que "il ne la trouve pas" n'est pas très clair je trouve.

++
0
parce que "il ne la trouve pas" n'est pas très clair je trouve.

Ouaip... Erreur de compil', ou d'édition de lien ?

Je veux dire, est-ce que ton fichier ".c" compile, et c'est au moment de créer l'éxé que ça plante, ou bien direct sur le ".c" ???

Quand à :
Oui, c'est comme en Java, il est nécessaire de passer par une instance
Forcément... Une méthode d'instance possède un argument caché, qui correspond à this... Si on a pas d'instance, ce paramètre ne peut être initialisé, donc ça foire...
Je veux dire
  a->maMethode(b, d, e);
  // est en fait traduit en :
  maMethode(a, b, d, e);


Pour appeller du C++ depuis du C, le plus simple est de transcrire (à l'identique) ton fichier ".c" en ".cpp" et de le recompiler à la mode C++.

Il y a bien des astuces, style faire jouer le C99 (syntaxe très proche du C++), etc... Mais c'est finaud et loin d'être élégant. Sur le coup la "méthode bourrin" est plus adaptée. Tu veux faire du C++ ? Fais le jusqu'au bout.

Rien, en C++ N'OBLIGE à faire des classes. Tes modules C compileront parfaitement en C++, et te permettrons d'utiliser namespaces, classes, fonctions surchargées et autres.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C'est à l'édition des liens que le bas blesse.
Je vais donc prendre la solution de tout passer en C++ , c'est compliqué mais bon si ça fonctionnne c'est le principal ;)
0
la solution de tout passer en C++ , c'est compliqué

Nan !!! Tu reprend le même fichier, tu change de nom, et tu met l'option qui va bien pour que le compilo traite du C++ et pas du C. N'IMPORTE QUEL programme C, à ma connaissance, doit pouvoir compiler en C++.

Tu rajoute juste l'include de la classe, et tu modifies les endrois où, du coup, tu utilises ta classe, et basta...

Mais si tu préfère tout passer en classe propres, je t'avoue, c'est toujours mieux !!!
0