ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 2014
-
15 avril 2007 à 15:12
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 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?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 15 avril 2007 à 15:25
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).
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 15 avril 2007 à 15:18
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..."
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 15 avril 2007 à 15:24
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
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 15 avril 2007 à 16:02
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..."
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 15 avril 2007 à 16:25
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:
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 15 avril 2007 à 16:30
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).
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 15 avril 2007 à 16:36
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"
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 16 avril 2007 à 10:57
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) :)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 16 avril 2007 à 21:03
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++