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 :

Getter de tableau de pointeur


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Getter de tableau de pointeur
    Bonjour!

    Je suis actuellement en train de programmer un jeu d’échec en C++. La board est une classe de type ChessBoard contenant un tableau de pointeur sur Piece (la classe abstraite sur lequel les classes propres à chaque type de pièces vont hérités).
    Je cherche à faire un simple getter sur ce tableau privé. Je me heurt à un problème quand au type de la méthode de ce getter.

    voici ma classe ChessBoard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class ChessBoard
    {
     
    private:
    	Piece* board[8][8];
    	void initBoard();
    public:
    	ChessBoard(void);
    	~ChessBoard(void);
    	Piece* getBoard();
    };
    et l'implémentation de ma classe:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    ChessBoard::ChessBoard(void)
    {
    	initBoard();
    }
     
     
    ChessBoard::~ChessBoard(void)
    {
    }
     
    void ChessBoard::initBoard()
    {
    	this->board[0][0] = new Tower("W");
    	this->board[0][1] = new Horse("W");
    	this->board[0][2] = new Bishop("W");
    	this->board[0][3] = new Queen("W");
    	this->board[0][4] = new King("W");
    	this->board[0][5] = new Bishop("W");
    	this->board[0][6] = new Horse("W");
    	this->board[0][7] = new Tower("W");
    	this->board[1][0] = new Pawn("W");
    	this->board[1][1] = new Pawn("W");
    	this->board[1][2] = new Pawn("W");
    	this->board[1][3] = new Pawn("W");
    	this->board[1][4] = new Pawn("W");
    	this->board[1][5] = new Pawn("W");
    	this->board[1][6] = new Pawn("W");
    	this->board[1][7] = new Pawn("W");
    	this->board[2][0] = NULL;
    	this->board[2][1] = NULL;
    	this->board[2][2] = NULL;
    	this->board[2][3] = NULL;
    	this->board[2][4] = NULL;
    	this->board[2][5] = NULL;
    	this->board[2][6] = NULL;
    	this->board[2][7] = NULL;
    	this->board[3][0] = NULL;
    	this->board[3][1] = NULL;
    	this->board[3][2] = NULL;
    	this->board[3][3] = NULL;
    	this->board[3][4] = NULL;
    	this->board[3][5] = NULL;
    	this->board[3][6] = NULL;
    	this->board[3][7] = NULL;
    	this->board[4][0] = NULL;
    	this->board[4][1] = NULL;
    	this->board[4][2] = NULL;
    	this->board[4][3] = NULL;
    	this->board[4][4] = NULL;
    	this->board[4][5] = NULL;
    	this->board[4][6] = NULL;
    	this->board[4][7] = NULL;
    	this->board[5][0] = NULL;
    	this->board[5][1] = NULL;
    	this->board[5][2] = NULL;
    	this->board[5][3] = NULL;
    	this->board[5][4] = NULL;
    	this->board[5][5] = NULL;
    	this->board[5][6] = NULL;
    	this->board[5][7] = NULL;
    	this->board[6][0] = new Pawn("B");
    	this->board[6][1] = new Pawn("B");
    	this->board[6][2] = new Pawn("B");
    	this->board[6][3] = new Pawn("B");
    	this->board[6][4] = new Pawn("B");
    	this->board[6][5] = new Pawn("B");
    	this->board[6][6] = new Pawn("B");
    	this->board[6][7] = new Pawn("B");
    	this->board[7][0] = new Tower("B");
    	this->board[7][1] = new Horse("B");
    	this->board[7][2] = new Bishop("B");
    	this->board[7][3] = new Queen("B");
    	this->board[7][4] = new King("B");
    	this->board[7][5] = new Bishop("B");
    	this->board[7][6] = new Horse("B");
    	this->board[7][7] = new Tower("B");
    }
     
    Piece* ChessBoard::getBoard()
    {
    	return(this->board);
    }
    Sur le return(this->board); dans le getter il me met Error: le type de valeur ne correspond pas au type de fonction sur la première parenthèse.
    J'ai bien sur essayé de déclarer la fonction en Piece*** ChessBoard::getBoard() mais cela ne fonctionne pas
    Bien sur le type du getter dans le code n'est pas bon mais c'est pour vous donner une idée de la structure du code.
    Auriez vous une idée?

    Merci d'avance!

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    On ne peut pas retourner un tableau en C++.
    (Mais on peut retourner un objet qui encapsule un tableau ou std::vector)

    Dans ton cas, je pense qu'il y a une erreur de conception.
    Pourquoi veux tu faire un accesseur sur ce tableau ?
    Quelle opération veux-tu faire sur ce tableau ?

    Edit: On peut savoir pourquoi une personne m'a infligé un point négatif pour cette réponse ?!

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    il serait mieux de faire un Piece* getPiece(int x, int y) { return board[x][y]; } pour récupérer la pièce d'une case.
    C'est "plus propre" que de retourner l'échiquier entier à l'extérieur
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses!

    Mes pieces doivent vérifier la légalité de leur mouvement et la présence d'une autre pieces sur leur route. Il me faut pour cela itéré différents calcul sur la grille depuis les pieces. Je dois donc récupéré ce tableau.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Et pourquoi ne pas faire ce test à l'intérieur de ChessBoard ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bool ChessBoard::validMove(int x, int y, int newx, int newy) const {
    }

  6. #6
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Tu n'a pas besoin de récupérer le tableau.
    La fonction proposée par Bousk qui permet de récupérer une pièce du tableau suffit.

    Tu peux aussi créer une fonction qui vérifie si le mouvement est valide (ou s'il y a des pièces intermédiaires entre deux cases) et l'implémenter dans la classe du plateau.

Discussions similaires

  1. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 10h47
  2. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 19h45
  3. [GCC] Tableau de pointeurs pour accès multiples en asm
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 12/12/2005, 08h47
  4. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 20h51
  5. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 13h19

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