2010-01-23 2 views
0

Voici mon struct:Accéder à une valeur à partir d'une structure via un pointeur? (C++)

struct Checker 
{ 
    short row; 
    short col; 
    unsigned short number; 
    short color; 
}; 

Maintenant, je dois faire aussi une autre struct pour représenter une carte de dames:

struct Board 
{ 
    Checker checkers[2][13]; // Zeroth entry of 13 is not used. 
    Checker *grid[8][8]; // each entry holds Null or an address 
         // of an element in the checkers array 
}; 

S'il importe, dames [0-1] représente de quel côté, [1-12] sont des nombres uniques pour chaque pièce.

De toute façon, j'ai une grille de 8x8, qui pointe vers NULL, ou une pièce de vérification. Ce que je veux faire est de pouvoir accéder à ce checker non par son identifiant unique (checkers [0] [5] par exemple), mais plutôt par sa position sur la grille.

Comment puis-je accéder aux membres de données de cette manière? J'essaie de résumer:

Déclaré un plateau de jeu de plateau. Mettre en place la grille de sorte que j'ai une pièce de dames au [0][0]. Ce serait checkers[0][1]. Donc, au lieu de faire cout <<checkers[0][1].number, je voudrais être en mesure d'imprimer le numéro du vérificateur sans connaître son identité, et sachant plutôt que ce vérificateur spécifique est à [0][0]

Merci.

Répondre

3
cout << grid[0][0]->number; 

Si la grille est un tableau de pointeurs vers structs Vérificateur, puis la grille 2 dimensions [0] [0] est un pointeur vers le vérificateur à cette position (0, 0). La syntaxe -> déréférence le pointeur, puis accède au champ number.

Si je ne comprends pas bien votre question ou si ma réponse échoue, veuillez me le faire savoir et je serai heureux de le supprimer. Il est tard. :)

+0

Fonctionne bien, merci! – kevin

+3

Notez que 'x-> y' est équivalent à' (* x) .y' (sauf lorsque la surcharge de l'opérateur entre en jeu). –

+1

Mais si elles ne sont pas équivalentes quand la surcharge de l'opérateur entre en jeu, tirez sur le développeur qui a fait cela :-( –

Questions connexes