J'essaie de renvoyer un membre de données de tableau à partir d'un objet de tableau 2D plus petit et d'essayer d'insérer le tableau dans un objet de tableau 2D plus grand. Mais en essayant cela, j'ai rencontré deux problèmes.C++ Retour et insertion d'un objet de tableau 2D
Le premier problème est que je veux retourner le nom du tableau 2D, mais je ne sais pas comment correctement syntaxe pour retourner le nom du tableau 2D.
C'est ce que mon membre de données Array 2D ressemble
private: int pieceArray[4][4]; // 2D Smaller Array
et je veux retourner ce tableau dans une fonction, mais celui-ci provoque une erreur du compilateur:
int Piece::returnPiece() { return pieceArray; //not vaild // return the 2D array name }
Je fatigué en utilisant ce type de retour et cela a fonctionné:
int Piece::returnPiece() { return pieceArray[4][4]; }
Mais je ne suis pas sûr si c'est ce que je veux, comme je veux pour retourner le tableau et tout son contenu.
L'autre problème est la fonction InsertArray(), où je mettrais la fonction returnPiece() dans l'argument InsertArray().
Le problème avec le InsertArray() est l'argument, voici le code pour elle:
void Grid::InsertArray(int arr[4][4]) //Compiler accepts, but does not work { for(int i = 0; i < x_ROWS ; ++i) { for (int j = 0; j < y_COLUMNS ; ++j) { squares[i][j] = arr[i][j]; } } }
Le problème est qu'il n'accepte pas mon returnPiece(), et si je supprimer le « [ 4] [4] ", mon compilateur n'accepte pas.
La plupart d'entre eux sont des erreurs de syntaxe, mais comment résoudre ces problèmes?
- Revenant l'ensemble pieceArray dans returnPiece()
- La syntaxe correcte pour l'argument dans InsertArray()
- L'argument de InsertArray() acceptant la returnPiece()
Ces 3 sont Les problèmes majeurs que j'ai besoin d'aide, et ont eu le même problème lorsque je tente d'utiliser la méthode du pointeur de pointeur. Est-ce que quelqu'un sait comment résoudre ces 3 problèmes?
Wow. Je n'avais aucune idée que vous pouviez retourner un tableau 2d. K & R semble être cool avec ça. J'ai dû changer la déclaration à: int (* returnPiece()) [4] { return pieceArray; } –
Oui. Si vous voulez que le tableau se désintègre, vous pouvez retourner "pieceArray" au lieu de son adresse.un pointeur vers son premier élément sera retourné, qui est de type int (*) [4]. mais à la baisse, vous perdez la taille de la dimension extérieure. Je pense que l'approche de adam est mieux ... –
... à moins que la dimension extérieure peut avoir une taille arbitraire. mais il semble être dimensionné pour 4 à l'envers always.an de retourner le tableau cariée est que vous avez la syntaxe iIndex naturelle du thingy retourné: foo() [4] [4] et non (* foo()) [4] [ 4] plus.tout en prenant en considération, je préférerais toujours Adam. –