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 :

fonction retournant une structure , probléme de declaration


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut fonction retournant une structure , probléme de declaration
    Bonjour,

    j'ai cree une structure maillon et j'aimerais creer une fonction qui me retourne un element de cet structure maillon voila comment j'ai procéder :

    dans mon Cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    maillon *  ListeInt::Retourner( )
    {
     
    	maillon *tmp;
    	tmp = new maillon;
     
     
    	return tmp;
     
    }

    Dans mon .h :
    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
    25
    26
    27
    28
    29
    class ListeInt
     
    {
     
    public:
     
    	[....]
     
    	maillon * Retourner();
     
     
     
    private:
     
     
    struct maillon
     
    	{
     
    		int Val;
     
    		maillon *Suiv;
     
    	};
     
     
     
     
    };

    mais il ne reconnais pas le maillon comme un element de ma structure voici les erreurs :

    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
    ompiling...
    liste.cpp
    c:\documents and settings\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2143: syntax error : missing ';' before '*'
    c:\documents and settings\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2501: 'maillon' : missing storage-class or type specifiers
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2501: 'Retourner' : missing storage-class or type specifiers
    c:\documents and settings\r\bureau\c++\seance 2\liste_2\liste\liste.cpp(411) : error C2143: syntax error : missing ';' before '*'
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.cpp(411) : error C2501: 'maillon' : missing storage-class or type specifiers
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.cpp(412) : error C2501: 'Retourner' : missing storage-class or type specifiers
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.cpp(418) : error C2440: 'return' : cannot convert from 'struct ListeInt::maillon *' to 'int'
            This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    main.cpp
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2143: syntax error : missing ';' before '*'
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2501: 'maillon' : missing storage-class or type specifiers
    c:\documents and settings\\bureau\c++\seance 2\liste_2\liste\liste.h(45) : error C2501: 'Retourner' : missing storage-class or type specifiers
    Error executing cl.exe.
     
    liste.exe - 10 error(s), 0 warning(s)
    Voila en vous remerciant

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Par défaut
    maillon est membre de listInt!!

    don le nom maillon n existe pas!!

    son nom est listInt::maillon!!!

    essaye ca pou ton cpp!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include"a.h"
     
    ListeInt::maillon*  ListeInt::Retourner( ) 
    { 
     
       ListeInt::maillon *tmp; 
       tmp = new ListeInt::maillon; 
     
     
       return tmp; 
     
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Par défaut h
    Bonjour,


    Merci de la rapidité de la réponse
    en effet tu avais cerné le fond du probléme ( l'accés a la structure )
    sauf que j'ai du bidouillé un peu le code comme cela pour que sa fonctionne correctement :

    le .h :

    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
    25
    26
    27
    28
    29
    30
    class ListeInt
     
    {
     
    public:
     
    	[...]
     
     
     
     
     
    private:
     
     
    struct maillon
     
    	{
     
    		int Valeur;
     
    		maillon *Suivant;
     
    	};
     
    	maillon * Retourner();
     
     
     
    };
    ma fonction ne sera pas accessible par le main de toute facon elle sert juste de calcul donc je peux la mettre en private et cela fonctionne donc bon...

    le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ListeInt::maillon *  ListeInt::Retourner( )
    {
     
    	maillon *tmp;
    	tmp = new maillon;
     
     
    	return tmp;
     
    }
    l'accés a new maillon ne necessite pas : new listeInt::maillon ( je ne sais pas pourquoi d'ailleurs )


    voila je ne sais pas si cela est la facon la plus propre d'envisager le probléme du moins elle fonctionne

    merci +++

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    De plus, je ne crois pas que faire renvoyer une structure privée par une fonction membre publique plaira au compilo.

  5. #5
    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 std::slist<int> au lieu de recréer ta propre classe même pas générique. (à moins que ce soit un exercice ?)

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    std::slist n'est pas standard, c'est un ajout de la STL de SGI pour les listes simplement chaînées.

    std::list par contre est bien standard (listes doublement chaînées).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Par défaut
    ne serait il pas plus simple de déclarer la structure hors de la classe avec un petit typedef qui va bien?

Discussions similaires

  1. fonction qui retourne une structure ?
    Par tootook dans le forum Débuter
    Réponses: 2
    Dernier message: 19/05/2012, 13h39
  2. fonction retournant une structure.
    Par Neckara dans le forum Débuter
    Réponses: 6
    Dernier message: 16/02/2012, 21h09
  3. Réponses: 3
    Dernier message: 01/03/2010, 17h20
  4. retourner une structure pour une fonction
    Par emardjean dans le forum C
    Réponses: 5
    Dernier message: 24/01/2007, 20h36

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