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 :

retourné un tableau


Sujet :

C++

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut retourné un tableau
    bonjour, bon je saisn, ca a lai ridicule, mais ca fait 20 mins que je planche la dessus, et ca commence a m'ennerver

    en fait, voila, j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool tabscreen[tabX][tabY];
    qui se trouve dans une classe, et j'aimerais faire une encaptulation de ce truc pour qu'on puisse y atteindre de l'exterieur.

    en fait, c'est pour pouvoir faire cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		bool array = S.returntab();
    		for(int i = 0; i < tabY;i++)
    			{
    			for(int j = 0; j < tabX;j++)
    				array[i][j]
    			}
    cad obtenire le poiteur du debut du tableau de l'exteur (je veux retrouné le tableau )

    mais le prob, c'est que quand je met ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    inline bool** returntab(){return tabscreen;}
    ben il m'envoi bouler, et je vois pas pourquoi.

    merci

    a++

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool** tab;
     
    bool** getTab() {return tab;};
    tu peux aussi émuler un tableau 2D avec un std::vector

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vector<bool> tab;
    vector<bool> getTab() {return tab;};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    vector<bool> array = machin.geTab();
     
    for (i=0;i<TAILLE_X;i++)
       for (j=0;j<TAILLE_Y;j++)
          array[(i-1)*TAILLE_Y+j] = ...;


    Enjoy yourself !

  3. #3
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Salut.

    C'est normal car ton tableau c'est du const bool* const *, pas du bool**.
    Tu peux faire le bourrin et convertir çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const_cast<const bool * const *>(reinterpret_cast<bool * const *>(tabscreen));
    Mais je te conseille plutôt de faire un accesseur sur les éléments du tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inline bool returntab(int X, int Y){return tabscreen[X, Y];}
    Tu peux aussi créer un vector et le renvoyer par référence, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<std::vector<bool> > tabscreen;
    ....
    inline const std::vector<std::vector<bool> > & returntab(){return tabscreen;}
    A+
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  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 : 39
    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
    bool[][] et bool** ne sont absolument pas équivalents, même après un cast barbare. Il faudra renvoyer un bool[][] avec au moins une dimension connue, sinon passer par des tableaux dynamiques (std::vector<std::vector<> >, ou des classes de matrices).

  5. #5
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    c'est quoi la différence entre bool[] et bool* ?
    c'est une différence au niveau "sémantique du langage" ?
    parce que les deux désignent une adresse, non ?

  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 : 39
    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
    bool[] et bool* sont presque équivalents, mais pas bool** et bool[][]. En gros, le 1er n'est pas contigü en mémoire, le second si.

Discussions similaires

  1. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  2. Réponses: 9
    Dernier message: 14/10/2005, 18h32
  3. Retourner un tableau ?
    Par chateau_dur dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2005, 12h11
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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