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

Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Dernière intervention
10 mai 2014
- 15 avril 2007 à 15:12 - Dernière réponse :
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 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 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Dernière intervention
11 mai 2009
15 avril 2007 à 15:18
3
Merci
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..."

Merci cs_LordBob 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_LordBob
Meilleure réponse
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
15 avril 2007 à 15:25
3
Merci
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).

Merci luhtor 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de luhtor
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Dernière intervention
10 mai 2014
15 avril 2007 à 15:24
0
Merci
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Dernière intervention
10 mai 2014
15 avril 2007 à 15:30
0
Merci
Bonjour,

Merci pour cette réponse.
A+

Nico</gras>
Commenter la réponse de ndubien
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Dernière intervention
11 mai 2009
15 avril 2007 à 16:02
0
Merci
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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
15 avril 2007 à 16:10
0
Merci
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
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
15 avril 2007 à 16:12
0
Merci
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
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
15 avril 2007 à 16:13
0
Merci
Oups, posté trop tard. Je parlais à LordBob.
En passent, petite erreur:
"pour imiter le C++"

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
15 avril 2007 à 16:14
0
Merci
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
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
15 avril 2007 à 16:20
0
Merci
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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
15 avril 2007 à 16:21
0
Merci
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
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
15 avril 2007 à 16:25
0
Merci
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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
15 avril 2007 à 16:30
0
Merci
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
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
15 avril 2007 à 16:36
0
Merci
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
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Dernière intervention
28 juillet 2008
16 avril 2007 à 10:57
0
Merci
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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
16 avril 2007 à 21:03
0
Merci
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.