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

Signaler
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
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

16 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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).
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
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..."
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
3
Bonjour,

Merci pour cette réponse.
A+

Nico</gras>
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
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..."
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Oups, posté trop tard. Je parlais à LordBob.
En passent, petite erreur:
"pour imiter le C++"

C++ (@++)<!--
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Comme je disais dans le post plus haut, je parlais à LordBob. Tu as posté plus vite que moi.

C++ (@++)<!--
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'ai bien compris, mais que viennent faire les pointeurs de fonction la dedans?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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) :)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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