1

total noob ici avec environ 2 mois d'expérience C++ (pas d'autre arrière-plan) alors allez-y doucement sur moi. Je suis en train d'écrire un jeu de combat pour une mission de programmation. La grille de jeu est 15X20 et j'essaie d'avoir la grille comme variable membre privé de la classe player.Débutant C++ Utilisation d'accesseurs/getters pour extraire des données d'une variable membre privée (tableau 2D)

Ma question est:

Si la classe player a une variable de membre privé:

char playgrid[15][20]; 

Y at-il des raisons pour lesquelles une fonction accesseur, définie comme:

char getgrid(int index1, int index2) 
{ 
    return playgrid[index1][index2]; 
} 

wouldn » t travail? .

Cela fait ma tête dans L'erreur que je reçois est:

C2065: identificateur non déclaré « playgrid »

qui pointe vers la ligne return playgrid[val1][val2] dans la définition accesseur. En essayant de comprendre cela, j'ai réussi à utiliser mes getters pour extraire des valeurs d'autres variables membres privées, donc tout le reste fonctionne correctement dans l'objet après sa création. Je ne suis certainement pas mal orthographier quelque chose ou abuser de la capitalisation. Dans mon constructeur, playgrid est initialisé comme suit:

int i, j; 

for (i=0; i<15; i++) 
{ 
    for (j=0; j<20; j++) 
    { 
     playgrid[i][j]='o'; 
    } 
} 

Ce qui donne?

+0

Montrez-nous toute la classe. –

+0

veuillez formater votre code afin que ce ne soit pas difficile à lire. Puisque vous êtes nouveau à cela, je l'ai fait pour vous. –

+0

Je pense que nous avons besoin de la définition complète de votre classe et de l'information où votre getter est défini. –

Répondre

4

Y at-il des raisons pour lesquelles une fonction accesseur , définie comme:

char getgrid(int index1, int index2) 
{ 
return playgrid[index1][index2]; 
} 

ne fonctionnerait pas?

Oui. Une fonction déclarée comme ceci ne serait pas une fonction membre d'une classe. Vous avez probablement voulu dire

char player::getgrid(int index1, int index2) 
{ 
    // ... 
} 
+0

hahaha wow ... :: frappe la tête sur le bureau :: Je veux dire vraiment? Je ne peux pas croire que j'ai raté ça. Je vous remercie! – Rob

+0

Un accesseur doit être _const_ qualifié, 'char player :: getgrid (int index1, int index2) const {..}'. –

Questions connexes