IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Savoir utiliser les fonctions membres de class


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Savoir utiliser les fonctions membres de class
    bj,

    je voudrais savoir comment utiliser des variables cree dans une fonction et l'utiliser dans une autre. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    class PPM {
      public:
        Read(const string &);
        Write(const string &,const string &,const string &);
      private:
        int nrows, ncols;
    }
     
    void PPM::Read(const string &fname) {
    PPM ppm;
    char r,g,b;
    ...
    //... lecture de ppm.nrows et ppm.nrows depuis un fichier
     
    // et quelques procedure pour acquerir r,g,b
    }
     
    void PPM::Write(const string &r,const string &g,const string &b){
     
    // je voudrais utiliser les valeurs de de ppm.nrows et ppm.nrows ICI 
    //dans cette fonction. Comment je fais, sachant que je ne peux modifier 
    //les arguments de Write() ?
    }
    Merci

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    mettre PPM ppm comme variable membre ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    mettre PPM ppm comme variable membre ?
    Cela ne va pas regler le probleme car mettre PPM ppm comme variable membre va declarer une nouvelle variable ppm.nrows...

  4. #4
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    A mon avis, déclarer un PPM comme variable membre d'un PPM ça va plutôt provoquer un plantage façon fonction récursive (quand on va instancier un PPM, il va vouloir créer son PPM membre, qui va à son tour vouloir créer son PPM membre etc.) ... si tant est que ça dépasse le stade de la compilation : le compilateur va tenter de créer une variable membre d'une classe qu'il est en train de définir et dont il n'a pas la taille ; à moins de faire une variable membre static.

    virtuadrack peux-tu préciser ce que tu souhaites faire ? J'avoue que j'ai un peu de mal à te suivre.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Citation Envoyé par Noxen Voir le message
    A mon avis, déclarer un PPM comme variable membre d'un PPM ça va plutôt provoquer un plantage façon fonction récursive (quand on va instancier un PPM, il va vouloir créer son PPM membre, qui va à son tour vouloir créer son PPM membre etc.) ... si tant est que ça dépasse le stade de la compilation : le compilateur va tenter de créer une variable membre d'une classe qu'il est en train de définir et dont il n'a pas la taille ; à moins de faire une variable membre static.

    virtuadrack peux-tu préciser ce que tu souhaites faire ? J'avoue que j'ai un peu de mal à te suivre.
    Mon programme crée un object de la class PPM (PPM ppm) dans la fonction Read(), puis j'assigne aux variables relies a la class PPM des ints, ces variables sont "ppm.nrows" et "ppm.ncols".

    a la fin de la fonction Read(), ppm.nrows = 300 et ppm.ncols = 654 (exemple).

    Maintenant je veux passer a la fonction Write() ces valeurs pour les utiliser pour faire une écriture sur un fichier, comment faire ?

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Serieusement je suis desolé mais je ne comprends pas bien le probleme ?
    Tu veux partagé des variables ?

    Je sais pas si cela repondra a ta question mais je te propose cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class PPM {
      public:
        Read(const string &);
        Write(const string &,const string &,const string &);
      private:
        int nrows, ncols;
    }
     
    void PPM::Read(const string &fname) {
    char r,g,b;
    // ici tu affectes des valeur a nrows et ncols a partir de ton traitement
    //Ex ci-dessous:
    this->nrows = une_valeur1;
    this->ncols = une_valeur2;
    }
     
    void PPM::Write(const string &r,const string &g,const string &b){
    {
    //ici tu peux utiliser maintenant nrows et ncols qui auront donc les valeurs
    //affectées apres l'execution de la methode Read(); c'est a dire une_valeur1 et une_valeur2
     
    }

    Je sais pas si j'ai repondu a ta question ?
    Peut etre que je suis completement a coté, si c'est le cas desolé et essaye de preciser le probleme.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  7. #7
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par virtuadrack Voir le message
    je voudrais savoir comment utiliser des variables cree dans une fonction et l'utiliser dans une autre.
    Par principe, une fonction est un block unitaire et autonome, elle sert à faire l'une de 2 choses (ou éventuellement les 2) :
    - effectuer un traitement (éventuellement pour modifier des variabes venues de l'extérieur et passées par référence) ; on parle alors plutôt de procédure ; ex : afficher un tableau, ou initialiser le contenu d'un tableau ;
    - obtenir une valeur de retour ; ex : obtenir la racine carré d'une nombre.

    Si tu veux que des variables soient affectées par 2 fonctions il te faut les créer à l'extérieur et appeler tes fonctions sur les 2. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const int size = 20;
    int tab[size];
     
    remplirTableau(tab, size);
    afficherTableau(tab, size);
    Les classes te permettent de regrouper des données et des traitements dans un ensemble logique, c'est pourquoi superjaja te proposait son code.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/12/2005, 23h09
  2. utilisation de fonction membre dans une autre
    Par tcharles dans le forum C++
    Réponses: 4
    Dernier message: 14/12/2005, 17h19
  3. Problèmes de fonctions membres de classe templates, gcc3.3.6
    Par yves.dessertine dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 17/10/2005, 21h36
  4. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  5. Réponses: 11
    Dernier message: 22/12/2003, 21h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo