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

Langage C++ Discussion :

passage des dimensions pour un tableau dans une classe


Sujet :

Langage C++

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut passage des dimensions pour un tableau dans une classe
    Bonjour à toutes et à tous,

    dans un progamme C++ j'ai besoin d'un tableau et je le définis comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const int x = 6;
    const int y = 4;
    int tabl[x][y];
    Ça, ça fonctionne sans problème.

    Maintenant, je voudrais que ce tableau appartienne à une classe et je voudrais passer les dimensions du tableau dans une fonction. mais là, je patauge, je n'y arrive pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MonTbl {
      int tbl[??][??];
      void dimTbl(??, ??);
    }
    void MonTbl::dimTbl(??, ??) {
      ????
    }
    Si vous savez ce qu'il faut mettre à la place des ?? autrement dit, je ne sais pas passer des constantes et les attribuer aux dimensions de mon tableau.

    Merci de votre aide.

    Pierre

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Tu as principalement deux choix :

    1) Tu sais quelle taille a ton tableau à la compilation (et par conséquent, c'est fixe et ne sera jamais changé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <int dim1, int dim2>
    class MonTbl {
      int tbl[dim1][dim2];
    };
    2) Si tu ne le sais pas, il faut alors que tu passes par des vector :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MonTbl {
      std::vector<std::vector<int> > monTableau;
     
      int redimensionner(int d1, int d2);
    };
    Je te le laisse lire la doc de vector : http://en.cppreference.com/w/cpp/container/vector

    Et pour le redimensionnement, j'en ai parlé il y a peu ici.

    Bon courage

  3. #3
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Les vecteurs imbriqué peuvent même être évités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::vector< int > tableau;
    int largeur = 6;
    int hauteur = 4;
    tableau.reserve( largeur * hauteur );
    Et des fonctions proche de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int voir_case( const int colonne, const int ligne ) const { return tableau.at(( ligne * largeur ) + colonne ); }

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Pourquoi le - largeur ?
    Personne ici n'indexe les tableaux à partir de 1, n'est-ce pas?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Merci Médinoc, je corrige ça tout de suite.

Discussions similaires

  1. récupération des données pour les afficher dans une ListView
    Par khoukha1 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 14/06/2012, 15h59
  2. Recuperer le nom des onglets pour les mettre dans une colonne
    Par nico4566 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2011, 18h23
  3. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 08/03/2010, 00h22
  4. Des problèmes pour ajouter valeur dans une ArrayList
    Par Fused dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/11/2008, 17h28
  5. Réponses: 2
    Dernier message: 26/04/2007, 15h04

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