Utiliser des fonctions dans des structures

cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 - 7 mai 2008 à 19:17
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012 - 8 mai 2008 à 17:25
Bonsoir,

Dans mon programme en C++, je souhaite pouvoir utiliser une fonction d'initialisation dans ma structure.
J'ai vu un programme d'exemple ici me disant qu'il fallait dans la fonction que je lui passe ma structure en pointeur sur this, hors cela me renvoi une erreur.

Voici le code de la structure:
struct version
{
    int majeur;
    int mineur;
    char *texte;
    void init( struct version *this);
};

Et les erreurs:
config.h:11: erreur: expected «," or «..." before «this"
config.h:14: erreur: expected «," or «..." before «this"

Merci d'avance à ceux qui pourront m'aider.

8 réponses

yassinebennani Messages postés 249 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 2 mai 2014
7 mai 2008 à 19:46
Je n'ai jamais vu ni entendu qu'on peut insèrer des méthodes à l'intérieur d'une structure dans ce cas elle n'est plus une structure c'est une classe donc pourquoi ne pas passer par une classe

Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 mai 2008 à 20:30
C'est possible en C++ mais aussi bien faire une classe. C'est (presque) exactement la même chose.

this est un mot clé réservé. Impossible d'en faire un nom de paramètre.

C++ (@++)<!--
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
7 mai 2008 à 23:22
Tu fais une fonction qui prend en paramètre un pointeur vers ta structure. Nul besoin de mettre une déclation de fonction dans une structure.

Après suivant tes besoins tu peux déclarer des pointeurs de fonctions dans une structure.

@+
Arnotic,
Admin CS
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
7 mai 2008 à 23:46
C'est bon j'ai résolu mon problème, en fait me suffisait d'inclure ma fonction directement dans la structure et non comme je le pensais, y mettre juste le prototype.

[auteur/JACKSPAROOW/1172897.aspx jacksparoow,]
Le fait que je n'utilise pas directement une classe, est que je n'en ai pas besoin.
La fonction que j'ai dans ma structure me permet uniquement de fournir une valeur de base à celle-ci, et il n'y a donc qu'une seule et unique fonction.

Cette structure en fait contient le numéro de version du programme, et la fonction ne fait que affecter aux variables de la structure, le numéro de version c'es tous.

Faire une classe m'obligerais donc à déclarer un constructeur, hors là ce n'est pas utile.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yassinebennani Messages postés 249 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 2 mai 2014
8 mai 2008 à 13:41
ça revien au même christoph ce que ta fait ou bien ta voulu faire c'est tout simplement une classe avec un constructeur sinon elle sera quoi la particularité d'une classe.   

Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
8 mai 2008 à 14:45
Au niveau théorique ça ne change peut être rien de passer par une classe qu'une structure, mais au niveau de ma façon de coder, cela change beeaucoup chose ;)
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
8 mai 2008 à 15:15
Bonjour,

La seule différence entre les structures et les classes est :
- Les membres sont publiques par défaut dans une structure (sinon il faut utiliser private:)
- Les membres sont privés par défaut dans une classe (sinon il faut utiliser public:).

Jean-François
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
8 mai 2008 à 17:25
Tu es loin de la différence.
Compile donc un code avec une classe, et un autre avec une structure. Compare l'asm généré et tu veras que ta classe ne sert qu'a ralentir ton programme.

@+
Arnotic,
Admin CS
0
Rejoignez-nous