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 :

C++ Problème tableaux


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut C++ Problème tableaux
    Bonjour à tous, voici donc mon problèmeje suis sous visual studio 2005)

    tout d'abord mon code:

    hello.cpp:
    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
    #include <iostream>
    #include "Grille.h"
    using namespace std;
     
    int main()
    {
    	Grille g();
    	g.remplirGrille();
    	int i, j;
    	for(i=0;i<10;i++){
    		for(j=0;j<10;j++){
    			cout<<g.getTab();
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    grille.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <string>
    #include "add.h"
    using namespace std;
    class Grille{
    	public:
    		Grille();
    		int** tab;
    		void setTab(int i, int j, int x);
    		int** getTab();
    		void remplirGrille();
    };
    grille.cpp:
    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
    #include "grille.h"
     
    Grille::Grille(){
    	tab;
    }
     
    void Grille::setTab(int i, int j, int x){
    	tab[i][j]=x;
    }
     
    int** Grille::getTab(){
    	return tab;
    }
     
    void Grille::remplirGrille(){
    	int i, j;
    	for(i=0;i<10;i++){
    		for(j=0;j<10;j++){
    			setTab(i, j, 9);
    		}
    	}
    }
    et voici les 2 erreurs que j'obtiens lors de la compilation:

    erreur n°1:
    hello.cpp(8): error C2228: left of '.getGrille' must have class/struct/union type

    erreur n°2:
    hello.cpp(12): error C2228: left of '.getTab' must have class/struct/union type
    type is 'overloaded-function'

    Comme vous l'aurai surement compris j'ai créé une class Grille avec un constructeur par defaut qui me créé une grille contenant un tableau à deux dimension. Cette class possède un accésseur getTab qui permet de retourner le tableau a deux dimention, un modificateur setTab(i,j,x) qui donne x comme valeur à tab[i][j] et enfin la classe possède une méthode remplirGrille qui rempli tout mon tableau avec la valeur 9.
    Mon main.cpp créé une grille g puis execute la methode remplirGrille et enfin affiche tout les valeurs de mon tableau soit:
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    9999999999
    Hélas chez moi cela ne compil pas (normal ça doit etre mal codé).
    Je remerci donc par avance tout ceux qui pourront m'apporter de l'aide.

  2. #2
    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
    Ca c'est la déclaration d'une fonction g renvoyant un objet de type Grille et ne prenant aucun paramètre.

    Ca par contre c'est bien la déclaration d'un objet g de type Grille.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 73
    Par défaut
    Tout d'abord, ta déclaration d'une grille n'est pas bonne, tu déclares une fonction au lieu d'une variable (voir la FAQ).

    Ensuite, ton getTab renvoie un int**, si tu veux afficher le contenu de ton tableau tu dois donc écrire

    (ou mieux écrire une méthode qui prend des coordonnées en paramètres).

    D'autre part, à aucun moment tu n'alloues de la mémoire pour ta grille. Dans ton constructeur, la ligne

    ne veut rien dire, il faut réserver un espace mémoire à l'aide de new :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tab = new int*[10];
     
    for (int i = 0 ; i < 10 ; i++)
        tab[i] = new int[10];
    (Voir encore la FAQ). Cependant, si ta grille est toujours de taille 10x10, il est plus judicieux de ne pas utiliser d'allocation dynamique mais plutôt statique, c'est-à-dire déclarer tab dans ta classe Grille comme ceci :


Discussions similaires

  1. Problème tableaux dynamiques
    Par Vince dans le forum C++
    Réponses: 6
    Dernier message: 04/03/2009, 17h08
  2. [Problème]Tableaux deux dimensions
    Par maloute80 dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2007, 14h31
  3. Réponses: 4
    Dernier message: 20/06/2007, 17h34
  4. Problèmes tableaux IE
    Par shadokk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 19/12/2006, 14h23
  5. Problèmes tableaux !
    Par Franck.H dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 09/08/2006, 12h51

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