Rechercher : dans
Par :

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

Dernière réponse le 16 avr 2005 à 01:26:31 Nashouille, le 12 avr 2005 à 18:20:34 
 Signaler ce message aux modérateurs

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?

Meilleures réponses pour « C/C++ appel de méthode en C » dans :
Les inlines en C++ VoirSignification Exemple 1 Inline et headers Exemple 2 Signification Le mot-clé inline est utilisé en C++ et s'applique à une fonction. Il indique au compilateur que chaque appel à la fonction inline devra être remplacé par le corps de cette...
Un clone "sûr" du C VoirUn clone sûr du C Vous voulez faire du C, mais un garbage collector (ramasse miettes) intégré vous fait changer d'avis ? Voici un clone du C fait par AT&T (donc du sérieux) qui s'appelle Cyclone. Ce clone du C permet de manipuler plus...
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...
Télécharger Visual C++ 2008 Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
Caractéristiques du langage C++ VoirLe fichier source Le fichier source d'un programme écrit en langage C++ est un simple fichier texte dont l'extension est par convention .CPP. Ce fichier source doit être un fichier texte non formaté, c'est-à-dire un fichier texte dans sa plus...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

Canard007, le 12 avr 2005 à 18:30:11

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. COIN!

Répondre à Canard007

2

kij_82, le 12 avr 2005 à 19:39:12

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, ;)

++

Répondre à kij_82

3

Luffy =), le 12 avr 2005 à 23:09:44

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.

++

Répondre à Luffy =)

4

SKZ81, le 13 avr 2005 à 00:40:55

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.

Répondre à SKZ81

5

Nashouille, le 13 avr 2005 à 09:22:59

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 ;)

Répondre à Nashouille

6

 SKZ81, le 16 avr 2005 à 01:26:31

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 !!!

Répondre à SKZ81