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 :

instanciation à la volée


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut instanciation à la volée
    Bonjour,
    Je dois coder un script de simulation d'un reseau metabolique.
    Les données necessaires à l'initialisation de mes objets[
    -quantité de substrat dans chaque noeud et nom (class noeud)
    -reaction entre les noeuds (class reaction)
    -reaction entre noeuds de type feedback (class feedback:public noeud)
    ]se trouvent dans un fichier.
    Etant donné qu'une instanciation sous une boucle de lecture detruit mes objets au fur et à mesure qu'ils sont crées, comment puis-je les "sauvegardés"??


    Merci d'avance

  2. #2
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Si j'ai bien compris, de l'allocation dynamique suffirait.
    Plus simplement tu pourrais utiliser std::vector déclaré hors de la boucle, et push_back :

    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Utilise un conteneur.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut
    C'est une solution dejà envisagée mais le souci, c'est que je dois instancier des noeuds(ma premiere classe) et des reactions et que ces dernières (les reactions) contiennent les adresses des noeuds (2 ou 3 noeuds) qu'elles utilisent???
    La nouvelle question est donc:
    -Comment representer la structure du reseau avec un simple conteneur?

    PS:
    mon programme fonctionne tres bien lorsque l'instanciation est faite en "dur" sous le main. noeuds)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut
    DE plus, l'ordre des reactions (donc de lancement des methodes de la class reaction) est potentielment important.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    C'est, justement, le but des conteneurs...

    Le tout, c'est de créer une classe qui fonctionne correctement...

    On peut en effet considérer (mais reprend moi si je me trompes ) que si un noeud donné est en relation avec un autre noeud donné, la réaction sera toujours identique...

    On peut donc en déduire que, SI chaque noeud n'était en relation qu'avec un seul autre noeud, on pourrait lui donner comme membre une paire du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::pair<relation,noeud>
    Mais, comme un noeud peut etre en relation avec plusieurs autres noeuds, il nous faut juste un conteneur permettant d'avoir plusieurs paires relation/noeud...

    Les types de contenurs utiles sont nombreux, mais on peut etre particulièrement attiré par les listes et par les vecteurs (la pile ou la file pourrait d'ailleurs mieux convenir dans certains cas )

    D'un autre coté, on se trouve confronté au fait que la classe relation doit connaitre la classe noeud et que la classe noeud doit connaitre la classe relation... Qu'à cela ne tienne, la "pré déclaration" vient à notre secours.

    Voici donc un code de ce que j'entre-apprecois
    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 relation; //la déclaration réelle suit, mais on en a besoin pour noeud
    class noeud
    {
        std::list<std::pair<relation,noeud> > Items;
        //les autres membres prives
        public:
            //tout ce qui va bien en public (constructeur/destructeurs/foncteurs)
    };
    class relation
    {
        noeud *Depart; //permet de retomber sur le noeud de départ
        noeud *Arrivee;//permet de retomber sur le noeud d'arrivee
        //!!!ATTENTION!!! il ne faut pas faire de delete sur ces deux noeuds ;)
        //les autres membre de la classe relation
        public:
            //tout ce qui va bien en public (constructeur/destructeurs/foncteurs)
    };
    class feedback:public noeud
    {
    //contenu de la classe feedback
    };
    Chaque fois que tu rajoute un noeud à un autre, tu crées la relation "qui va bien" entre ces deux noeuds, tu crées une paire avec le noeud à rajouter et la relation que tu vient de créer, et tu rajoute cette paire dans la liste (ce peut etre, selon les cas, un vecteur, une pile ou une file )

    Tu sera en mesure de créer, finalement un arbre Naire de tous tes noeuds
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Par défaut
    C'est extremement troublant car le code fourni ressemble preque trait pour trait au mien( excepté la classe noeud).

    Je pense que c'est une bonne base de travail pour construire une classe noeud améliorée, et ainsi recupèré mes neouds et mes liens.
    merci beaucoup

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

Discussions similaires

  1. Instanciation d'Interface à la volée
    Par ElTchoupi dans le forum C#
    Réponses: 19
    Dernier message: 11/03/2010, 17h57
  2. instanciation des web services à la volée
    Par newdevso dans le forum Services Web
    Réponses: 24
    Dernier message: 21/08/2009, 15h27
  3. [FLASH MX 2004] Texte dynamique à la volée
    Par falcon dans le forum Flash
    Réponses: 2
    Dernier message: 27/05/2004, 22h00
  4. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

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