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

SL & STL C++ Discussion :

typedef et list


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Par défaut typedef et list
    Bonjour,
    Voici un code que je compilais auparavant dans C++ Builder 6 et qui fonctionnait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class CoinBoite; // pré-déclarartion de la classe
    typedef list <CoinBoite> bListeCoinBoite;
    typedef bListeCoinBoite :: iterator bIteratorListeCoinBoite;
    Aujourdh'ui dans C++ Builder 2007 j'obtient le message suivant sur une template de la STL (list):
    [BCC32 Erreur] list(26): E2450 Structure 'CoinBoite' non définie

    Y-a-t-il un changement dans la spécification des list (je crois que maintenant le compilateur utilise l'implatation Dinkumware de la STL et avant c'était la STLPort)

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Es-tu certain que cela ne serait pas plutôt des pointeurs d'instances de ton CoinBoite ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class CoinBoite
    typedef std::list< CoinBoite * > bListCoinBoite;
    Ceci compilera sans problème.

  3. #3
    Invité
    Invité(e)
    Par défaut
    tu n'aurais pas oublié d'insérer le header qui déclare ta classe CoinBoite ?

  4. #4
    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,

    On en revient, presque toujours, à la manière dont la norme a été implémentée et/ou suivie...

    S'ils ont décidé de changer de "fournisseur" pour l'implémentation de la S(T)L, il n'est pas impossible que certaines choses soient permises avec une implémentation et pas avec l'autre (ne connaissant pas suffisamment la norme, je ne peux pas dire lequel est dans le vrai )

    Par contre, avec l'implémentation que j'utilise (celle de GCC), il est vrai qu'il n'y a aucun problème à utiliser la pré déclaration quand on fait un typedef avec pointeur sur objet (typedef std::vector<maclass*>) et qu'il faut inclure le fichier d'en-tête dans lequel se trouve la déclaration quand on fait un typedef avec simplement un objet (typedef std::vector<maclass>).

    Tu devrais pouvoir corriger les choses en incluant simplement l'en-tête au lieu de faire la pré déclaration, ou mieux...: ne peux tu pas envisager de mettre les typedef directement... dans l'en-tête dans lequel ta classe est déclarée (typiquement dans coinboite.h)

    A moins, évidemment, que ce ne soit un typedef imbriqué dans une autre classe...
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Par défaut
    Merci pour vos réponses.
    J'ai effectivement contourné le probleme d'"imbrication" dans une autre classe en ressortant les fonctions qui utilisent le typedef pour pouvoir inclure le fichier d'entete.

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

Discussions similaires

  1. Typedef sur liste de types ?
    Par Iradrille dans le forum Langage
    Réponses: 7
    Dernier message: 06/11/2013, 11h36
  2. typedef struct dans une liste d'initialisations
    Par titibete dans le forum C++
    Réponses: 3
    Dernier message: 17/11/2010, 20h39
  3. typedef et liste
    Par mathieumadrid dans le forum C
    Réponses: 6
    Dernier message: 08/12/2006, 22h24
  4. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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