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 :

Passer une structure a un programme (comme pour une fonction)


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 109
    Points : 48
    Points
    48
    Par défaut Passer une structure a un programme (comme pour une fonction)
    bonjour,

    et t il possible de passer une strcture en arguemnt a un programe B.

    bien sur ce programme B serai appeler par un autre programme A qui lui passerai la dit structure.

    je ne voudrai pas passer mon programme B en dll.

    merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Non, ce que tu veux faire n'est pas possible directement.

    Quelques pistes toutefois pour le faire:

    1/ L'appelant A créé un fichier temporaire et dump la structure dedans. Il appelle le programme B en lui passant le nom du fichier à traiter. Le programme appellé B ouvre le fichier, recréé la structure. Le programme appelé B est responsable de l'affacement du fichier temporaire.

    2/ L'appelant créé une mémoire partagée et écrit sa structure dedans. Il appelle le programme B qui mappe la mémoire partagée dans son espace mémoire et peut alors utiliser cette structure.

    A mon avis, je prendrai la solution 1 car cela me semble la plus simple à réaliser.

  3. #3
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    Moi je dirais qu'il faut la placer par référence==>

    struct gateau
    {
    int quantite_chocolat;
    int quantite_farine;
    int quantite_oeuf;
    }

    bool elaboration(gateau const&gateau_chocolat) const;


    oula, je viens de lire la premiere reponse==>j'ai mal lu la question donc!

    je poste quand meme le message qui fera sourire quelque un surement!

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Citation Envoyé par loicounet Voir le message
    je poste quand meme le message qui fera sourire quelque un surement!
    J'ai bien souri !!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 7
    Points
    7
    Par défaut réponse
    Sinon tu peux envoyer les valeurs de ta structure via l'argument du main si ta structure n'est pas trop complexe

  6. #6
    Membre confirmé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Points : 606
    Points
    606
    Par défaut
    Salut à tous !

    Sinon, si tu développes sur un système d'exploitation compatible Unix, tu peux utiliser toutes la puissance du paradigme de ce système d'exploitation, grâce au principe de flux. Concrètement, voici un premier exemple simple :

    Tu as la structure Toto suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct Toto {
       int tata;
       int tutu;
    };
    Ton programme B place la structure linéarisée dans le flux de sortie standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Toto toto;
     
    /*
    Des manipulations sur toto.
    */
     
    std::cout << toto.tata << ' ' << toto.tutu << std::endl;
    Au niveau de la ligne de commande, tu branches le flux de sortie du programme B vers le flux d'entrée du programme A ($ est l'invite de commande) :

    Le programme A attend dans ses arguments la structure linéarisée et la recompose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Toto toto;
    toto.tata = std::atoi(argv[1]);
    toto.tutu = std::atoi(argv[2]);
    Si ça te chante, tu peux aussi facilement stocker ta structure de données dans le fichier nommé « fichier » :

    Bien sûr, il faut un peu faire attention à la linéarisation de ta structure de données. Cela dit, ce n'est qu'un petit aperçu de la puissance du paradigme Unix, je t'encourage à en user et en abuser.

    À bientôt.

    Le Farfadet Spatial

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2006, 11h51
  2. Erreur dans un programme php pour une connexion à une bdd
    Par gaetan.tranvouez dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/06/2006, 22h06
  3. Réponses: 6
    Dernier message: 24/03/2006, 19h24
  4. Réponses: 1
    Dernier message: 09/02/2006, 12h03
  5. Réponses: 8
    Dernier message: 09/11/2005, 17h24

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