Est-il possible de créer des class en C? [Résolu]

ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention - 15 avril 2007 à 15:12 - Dernière réponse : vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention
- 16 avril 2007 à 21:03
Bonjour,

Est-il possible de créer des class en C?
Si oui comment (different du c++?) les faire te comment s'en servir?

Merci d'avance et à bientôt.

Nico
Afficher la suite 

16 réponses

Répondre au sujet
cs_LordBob 2865 Messages postés samedi 2 novembre 2002Date d'inscription 11 mai 2009 Dernière intervention - 15 avril 2007 à 15:18
+3
Utile
en C, impossible de créé des classes.
c'est d'ailleur pour cela que le C++ a été inventé, pour permettre au C d'implémenter des classes et de permettre une programmation orienté objet!
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_LordBob
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 15 avril 2007 à 15:25
+3
Utile
Il me semble que l'on peut quand meme. Au lieu de "class", on utilise des "struct", ca revient au meme, c'est juste la syntaxe pour l'utiliser qui change un peu. Par contre, pas d'héritage possible, etc ... (enfin je vois pas comment).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de luhtor
ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention - 15 avril 2007 à 15:24
0
Utile
Bonjour,

Merci pour cette réponse.
Les fonctions API Win32 utilisées en programmation C sont elles les mêmes que celles utilisées en C++.
Par celà je veux savoir si un programme en C peut être compilé en C++ correctement?
Nico
Commenter la réponse de ndubien
ndubien 557 Messages postés dimanche 25 septembre 2005Date d'inscription 10 mai 2014 Dernière intervention - 15 avril 2007 à 15:30
0
Utile
Bonjour,

Merci pour cette réponse.
A+

Nico</gras>
Commenter la réponse de ndubien
cs_LordBob 2865 Messages postés samedi 2 novembre 2002Date d'inscription 11 mai 2009 Dernière intervention - 15 avril 2007 à 16:02
0
Utile
alors pour ce qui est des API Win32, oui ce sont les memes en C que en C++, d'ailleurs les API sont indépendante du langage utilisé!

ensuite pour ce qui est des struct pour remplacer les classes, cela me semble bizar... mais bon comme je ne sais pas trop, je prefere ne rien dire! mais je ne sais pas si à l'interieur d'un struct, on peut mettre des fonctions...
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Commenter la réponse de cs_LordBob
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2007 à 16:10
0
Utile
Ben non en C pas de méthodes comme en C++ (qui on un pointeur this), donc on peut pas comparer les struct du C et les class/struct du C++

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 15 avril 2007 à 16:12
0
Utile
Ce sera des pointeurs de fonctions mais je n'en vois pas du tout l'intérêt. À quoi bon faire du C si c'est pour imiter les C++ ?

C++ (@++)<!--
Commenter la réponse de SAKingdom
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 15 avril 2007 à 16:13
0
Utile
Oups, posté trop tard. Je parlais à LordBob.
En passent, petite erreur:
"pour imiter le C++"

C++ (@++)<!--
Commenter la réponse de SAKingdom
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2007 à 16:14
0
Utile
Non une struct qui contient des pointeurs de fonctions, ca n'a pas du tout le même sens qu'une méthode dans une classe

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 15 avril 2007 à 16:20
0
Utile
Comme je disais dans le post plus haut, je parlais à LordBob. Tu as posté plus vite que moi.

C++ (@++)<!--
Commenter la réponse de SAKingdom
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2007 à 16:21
0
Utile
J'ai bien compris, mais que viennent faire les pointeurs de fonction la dedans?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 15 avril 2007 à 16:25
0
Utile
Ben, LordBob à bien dit:
"mais je ne sais pas si à l'interieur d'un struct, on peut mettre des fonctions"
Le seul moyen que je connaisse d'imiter ça c'est par des pointeurs de fonctions qu'on initialisera avec une fonction faite pour ça non ?
Exemple:

PseudoClass class;

InitStructure(&class);
class.Function1(nothing);

etc.

C++ (@++)<!--
Commenter la réponse de SAKingdom
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 15 avril 2007 à 16:30
0
Utile
Ce n'est pas du tout comparable au méthodes qu'on a en programmation objet.
En C++, tu aura un comportement potentiellement différent si tu fais o1.f() ou o2.f(), car à l'intérieur de f, on aura accès au données de o1 et o2 (et c'est bien ça l'intérêt des méthodes).
Si on met des pointeurs de fonction dans une structure, on n'a pas ça (en gros ca n'apporte de rien de mettre un pointeur de fonction dans une structure).

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 15 avril 2007 à 16:36
0
Utile
Mais je sais bien. C'est exactement pour ça que j'ai dis que je n'en voyais pas l'intérêt. C'est beaucoup trop limité comparé aux classes.
J'aurais du dire:
"Le seul moyen que je connaisse de ce rapprocher de ça"

C++ (@++)<!--
Commenter la réponse de SAKingdom
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 16 avril 2007 à 10:57
0
Utile
Mais la syntaxe obj1.f() et obj2.f() c'est bien propre au C++. Dans d'autre langage, on fait de l'objet sans cette syntaxe. C'est la syntaxe du C:

au lieu d'avoir la méthode définie dans la classe, on la définie à l'extérieur de la structure, avec en premier paramètre le pointeur "this" (transparent en C++).

en C++:
class/struct MaClass
{
void Methode();
};

Syntaxe C/Ada/Etc ... :
class/struct MaClass
{
};

void Methode(MaClass * _this);

Donc oui, on peut créer des systèmes de class, mais pas de programmation object en C. Ou alors ca devient plus compliqué. La Poo c'est pas de la magie toute facon, ce n'est qu'un système transparent de pointeurs. (qu'on me corrige si je me trompe) :)
Commenter la réponse de luhtor
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 16 avril 2007 à 21:03
0
Utile
C'est un peu réducteur, il y a aussi tout le mécanisme de fonctions virtuelles qui n'est pas trivial, les templates...
Mais évidemment la POO n'est pas de la magie, il est donc possible de faire exactement la même chose en C qu'en C++, mais cela revient à réinventer le C++

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.