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 :

Retourner l'adresse d'une structure


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut Retourner l'adresse d'une structure
    Bonsoir.

    Comment faire pour qu'un fonction retourne l'adresse d'une structure ??


    Merci d'avance

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef struct 
    {
        int i;
    } structToto;
     
    structToto* fonctiontoto()
    {
       [...]
        return &sToto; //la variable est de type structToto
    }
    Hope it helps.

  3. #3
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Je pense que ça ira, merci

  4. #4
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Et mince... Petit problème...

    En fait, ma structure est déja déclarée dans ma classe, et c'est un pointeur car je fais une allocation dynamique pendant le programme. Ainsi, ma fonction doit retourner l'adresse d'une partie du tableau de structure en question.

    Comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct Data_Texture_Sol C_Terrain::*Get_DataTextureSol(int TextureSol)
    {
        return &Data_TextureSol[TextureSol];
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class C_Terrain
    {
    private:
    [...]
    struct Data_Texture_Sol *Data_TextureSol;
    public:
     
    struct Data_Texture_Sol *Get_DataTextureSol(int TextureSol);
    };

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    Si j'ai bien compris, Data_TextureSol est un tableau? Si oui, alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class C_Terrain
    {
    private:
    [...]
    Data_Texture_Sol *Data_TextureSol; //pas de struct en début de ligne
    public:
     
    Data_Texture_Sol *Get_DataTextureSol(int TextureSol); //pas de struct en début de ligne
    };
    [/quote]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Data_Texture_Sol* C_Terrain::Get_DataTextureSol(int TextureSol)
    {
        if (TextureSol<size) //size=taille de ton tableau
        {
            return &Data_TextureSol[TextureSol];
        }
        else
        {
            return NULL;
        }
    }
    Ce code devrait fonctionner, mais il est absolument horrible.

    Dans une optique purement didactique, je me permet de le corriger un peu:
    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
    #include <vector>
    typedef struct 
    {
        int toto;
    } Data_Texture_Sol;
     
    class CTerrain  // Evite de mette des "_" partout, ça rend le code inutilement illisible
    {
    private:
        [...]
            std::vector<Data_Texture_Sol*> m_DataTextureSolList; //l'utilisation du template vector est infiniment préférable à un tableau de type C
    //de plus, utilise de préférence un tableau de pointeurs, c'est plus souple
    //enfin, l'utilisation du préfixe "m_" indique qu'il s'agit d'une variable membre. C'est une convention utilisée par beaucoup de développeur.
    public:    
        Data_Texture_Sol* GetDataTextureSol(int iIndex); //la pertinence des noms de variables est importante. De plus, le mot "index" représente un concept ultra fréquent en programmation.
    };
     
    Data_Texture_Sol* CTerrain::Get_DataTextureSol(int iIndex)
    {
        if (iIndex<m_DataTextureSolList.size())
        { // toujours tester la validité d'un indice quand on attaque un tableau
            return m_DataTextureSolList.at(iIndex);
        }
        else
        {
            return NULL;
        }
    }

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    On en fait pas de typedef struct machin {} en C++, le typedef ne sert plus
    Je plussoie r0d

Discussions similaires

  1. Adresse d'une structure inconnue
    Par will74 dans le forum C
    Réponses: 12
    Dernier message: 05/01/2011, 22h41
  2. Retourner l'adresse d'une instance ou None
    Par pfeuh dans le forum Général Python
    Réponses: 9
    Dernier message: 21/09/2010, 19h59
  3. retourne l'adresse d'une variable locale ou temporaire
    Par jojo000 dans le forum Débuter
    Réponses: 10
    Dernier message: 12/06/2009, 11h11
  4. Réponses: 11
    Dernier message: 09/05/2006, 09h34
  5. Ecrire l'adresse d'une structure dans un uint32
    Par Steph12 dans le forum C++
    Réponses: 6
    Dernier message: 17/03/2005, 16h31

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