“Erreur: l'expression doit avoir un pointeur de type” si vous utilisez le mot clé “this”
Donc j'ai fait une classe parent, que j'appellerai Parent
qui a un Square*
de grille variable membre. La grille variable est un pointeur vers un large éventail de Places, qui contiennent key
variables membres. (Pensez à ce projet comme une table de hachage (hashtable) Le problème est que je suis prise de fonction dans le Parent
classe qui modifie les variables clés de l' Square
tableau, et obtenir une erreur. Cette ligne de code compile:
this->grid = new Square[row*col];
mais cette ligne ne compile pas:
this->grid[i*col + j]->key1 = j;
il souligne this
et dit d'expression doit avoir un type de pointeur. Je me demandais si quelqu'un a des idées à ce que je fait de mal?
void Parent::initialize(int row,int col) {
this->grid = new Square[row*col];
for(int i = 0; i < row; i++) {
for(int j = 0;j < col; j++) {
this->grid[i*col + j]->key1 = j;
this->grid[i*col + j]->key2 = i;
}
}
- Ce type ne
grid
tenir? - effacer redondant this-> " à partir de votre code; il n'est pas le Javascript.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
C'est parce que même si il est vrai que votre grille est un pointeur, vous avez attribué à le sont pointés par sa mémoire un tableau de
Square
objet. Ainsi, lorsque vous utilisez l'opérateur [] vous êtes l'obtention d'un objet de typeSquare
et pas unSquare*
et pour unSquare
objet que vous hve pour utiliser le . opérateur et pas le -> opérateur de.Je suppose que
this->grid
est de typeSquare*
, doncthis->grid[0]
est de typeSquare&
et vous devez utiliser.
(dot) pas->
(flèche) à l'accès des membres deSquare&
. Pour utiliser la flèche pour l'expression expression doit avoir un pointeur de type...