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 :

pointeur générique en C++


Sujet :

C++

  1. #1
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut pointeur générique en C++
    Bonjour,

    Je vais surement choquer les puristes, mais voila après avoir lu, essayé de comprendre les templates, refaire mon analyse UML. J'en arrive a bloquer sur un point.

    Un objet A à pour attribut la reférence d'un objet B sans connaitre son type avant la création de l'objet A car l'objet B créé dépend du traitement qui se passe dans A.

    Plusieurs questions :

    -Comme ca fait un moment que je fais du C, est-ce que je pense C et que mon problème est infaisable en C++. En gros est-ce qu'en C++ le "void *" est interdit voire déconseillé.
    -J'ai lu des articles sur les templates, je ne crois pas qu'ici ca soit fait pour ca. Qu'en pensez vous ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les types possibles pour ton objet B, ils ont bien une interface commune non (--> classe de base) ? Sinon comment peux-tu exploiter cet objet B ?

    En gros est-ce qu'en C++ le "void *" est interdit voire déconseillé
    Interdit non, mais rarement justifié ; on peut presque toujours trouver mieux.

  3. #3
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Laurent Gomila
    Les types possibles pour ton objet B, ils ont bien une interface commune non (--> classe de base) ? Sinon comment peux-tu exploiter cet objet B ?
    Ben en faite je pensais mettre un code type entier pour définir l'objet. Je sais c'est assez tordu.

    En faite j'ai envie que A puisse remonter les informations de B tout en créant B sachant que A connais le type de B que quand il le créé.

    Si on replace dans mon contexte, j'ai GPS qui envoie des trames nmea dont les données dépendent des 5 premiers lettres.

    Gps envoie la trame à nmea qui vérifie l'intègrité de la trame et qui aprés l'analyse pour en déduire quelles en sont les données. Suivant le type de données, nmea créer l'objet correspondant aux données.

    Le problème est que si nmea ne stock pas l'objet qu'il créer, je perdrais l'accès au donnée traité par l'objet correspondant.

    exemple :
    $GPGLL,4916.45,N,12311.12,W,225444,A,*31

    GPGLL => donnée de latitude et longitude objet associé gpgll

    La je me perds soit dans ma conception soit dans le C++ pourtant je suis convaincu par mon analyse

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok, mais une fois ton objet créé tu as besoin d'en faire quoi par la suite ? Si tu le stockais sous forme de void* comment l'exploiterais-tu ?

  5. #5
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ok, mais une fois ton objet créé tu as besoin d'en faire quoi par la suite ? Si tu le stockais sous forme de void* comment l'exploiterais-tu ?
    Avec un code entier et void *, je peux connaitre le type de donnée stocké dans nmea.

    1 => objet gpgll

    Ca existe pas ce concept en C++ un objet qui inclut un autre objet dynamiquement ?

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Au pire si tu tiens à rester sur cette solution, utilise boost::any + boost::any_cast, ce sera un poil plus propre.

    Mais bon, est-ce que tous ces objets ne peuvent pas avoir une interface commune ? Est-ce que tu ne peux pas déléguer les traitements à des fonctions virtuelles ?

  7. #7
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Bon pour le bien de mon projet, je vais changer de conception et admettre que les GPS émettent des trames nmea connu selon les modèles.

    Merci pour les conseils.

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

Discussions similaires

  1. Pointeur générique (void *)
    Par c-candide dans le forum C
    Réponses: 22
    Dernier message: 25/02/2007, 02h52
  2. Pointeur générique vers d'autres types d'objets
    Par LapinGarou dans le forum MFC
    Réponses: 11
    Dernier message: 15/09/2006, 16h48
  3. déréférencer un pointeur générique ?
    Par tintin72 dans le forum C
    Réponses: 6
    Dernier message: 23/07/2006, 12h40
  4. Question sur les pointeurs génériques
    Par mikedavem dans le forum C
    Réponses: 16
    Dernier message: 24/05/2006, 11h56
  5. pointeur générique
    Par ghostdog dans le forum C
    Réponses: 14
    Dernier message: 09/11/2005, 15h23

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