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 :

Classes et objet


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Par défaut Classes et objet
    Bonjour, je suis débutant en C++ et je suis confronté à un petit problème de création d'objet.

    J'utilise un logiciel d'optimisation couplé à une librairie dynamique (win32).
    La partie qui me pose problème est la suivante:
    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
     
    A=0
    double Eval(int uid, int index, double output, double* input)
    {
       Maclasse exp;
       if (index==0)
       {
         if (A==0)
         {
              initsimula(&exp);
              exp.setvariable("varexp", "INIT");
              exp.runExperiment();
          }
         if (A!=0)
         {
              exp.setvariable("varExp","SIMU");
              exp.setVariable("x1", 12.0);
              exp.runExperiment();
          }
        A=A+1;
       }
       double y=exp.getvariable("y1");
       return y;
    }
    Voilà, j'explique. La fonction Eval est appelé a chaque expérience et 1 fois pour chaque output... Le problème c'est que je veut lancer mon algorhitme en mode initialisation seulement à la première expérience (runExperiment()), beaucoup de variables sont calculée et mise en mémoire.Ces variables calculées à l'initialisation doivent être disponible pour les autres expérience, c'est à dire pour les autres appel de la fonction Eval. Seulement, lors de l'appel de la fonction Eval, la ligne : Maclasse exp; semble effacer tous ce qui à été fait avant. Je voudrait creer l'objet exp une seule fois (la première) tout en appelant (exp.setvariable par exemple) cet objet dans la fonction Eval.

    J'ai essayé de creer l'objet exp aprés mon if (A==0), seulment je pouvait pas compiler car mon exp n'était pas disponnible aprés le if A!=0.

    Auriez vous une idée pour créer mon objet exp une seule fois et qu'il soit disponnible dans la fonction Eval. Sachant que je suis obligé de l'appeler exp (qui est déjà défini dans math.h ...)

    D'avance merci et désolé si je n'est pas été clair et surtout si j'ai employé les mauvais termes

  2. #2
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    je pense que cet article de la faq répond à ta question.

  3. #3
    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
    Sans taper dans le singleton qui me parait totalement déplacé ici (qui ne t'assure qu'il n'y aura pas besoin d'autres objets ?), un objet statique me parait beaucoup mieux. Avec un objet statique, ton objet ne sera creé qu'une fois, au premier appel de la fonction.
    "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)

  4. #4
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    si la solution adoptée est l'utilisation d'un objet statique, alors il est conseillé de lire cet autre article de la faq.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Par défaut
    Merci beaucoup. Je vais me mettre à la lecture. En tous cas, merci beaucoup.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Par défaut
    L'objet statique fonctionne parfaitement.
    Merci, le passage par la librairie dynamique me fais gagner 3h à 4h de calcul. La vie doit être belle quand on connait le C++. Je vais m'y mettre plus serieusement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Classe et objet: besoin d'aide
    Par Touareg dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2007, 17h04
  2. Classe et objet + Modules standards
    Par Girzi dans le forum Modules
    Réponses: 2
    Dernier message: 03/11/2006, 21h23
  3. classe statique objet
    Par drKzs dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2006, 11h58
  4. Réponses: 4
    Dernier message: 16/08/2006, 09h19
  5. Classes et objets...
    Par cyrpaut dans le forum Général Python
    Réponses: 2
    Dernier message: 20/11/2005, 20h48

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