2008-12-27 20 views
0

Ce problème provient d'un problème résolu dans ma vieille question, qui est de: C++ Inserting 2D array Object into another 2D array ObjectC++ 2DArray Objects; Pointeurs et Array problèmes

Mais aussi créé un nouveau problème pour moi. S'il vous plaît lire la question et la solution dans le lien pour comprendre mon problème. La solution dans la question précédente était de rendre ma fonction de membre de données dans un pointeur vers pointeur, pour permettre le passage dans l'autre fonction de membre de données. Mais tout en corrigeant cela, la première fonction de membre de données qui est smallerArray.extractPiece() maintenant seulement renvoyer l'adresse du pointeur au pointeur et pas le contenu de ces pointeurs. J'ai besoin du contenu pour que ma 2ème fonction de membre de données largerArray.extractArray(result) fonctionne correctement, car je tente d'exécuter le code et donne une erreur de fenêtre, et non une erreur de compilation.

Est-ce que quelqu'un sait comment extraire le contenu du smallerArray.extractPiece() et au lieu d'obtenir l'adresse, et est-ce qu'il n'y en a pas, est-ce que quelqu'un a d'autres méthodes pour créer un objet 2D-Array?

Répondre

0

En ce moment, votre problème semble un peu sous-spécifié. Quelle est la taille d'une 'pièce' attendez-vous du plus petit tableau, et où dans le tableau plus grand voulez-vous l'insérer?

1
void Grid::extractArray(int** arr) 
{ 
    for(int i = 0; i < xGrid ; ++i) { 
    for (int j = 0; j < yGrid ; ++j) { 
     squares[i][j] = arr[i][j]; 
    } 
    } 
} 

Le tableau plus petit int**arr n'a pas autant d'éléments que le Grid. xGrid et yGrid sont trop volumineux pour être utilisés comme indices pour arr[][].

Vous devez transmettre l'objet tableau plus petit complet à la fonction extractArray() et utiliser les tailles de cet objet pour la fonction de copie.

void Grid::extractArray(const Piece & piece) 
{ 
    for(int i = 0; i < piece.xGrid ; ++i) { 
    for (int j = 0; j < piece.yGrid ; ++j) { 
     squares[i][j] = arr[i][j]; 
    } 
    } 
} 
0

Il peut faciliter les choses si vous créez un objet tableau 2D ou classe (ou struct)

class BaxMatrix { 
public: 
    int m_Data[4][4]; 
} 

avec un peu de travail, vous pouvez construire des structures dynamiques ou utiliser des structures STL comme vous le souhaitez. Les données et la référence aux données sont deux animaux différents. Il est préférable pour vous de clarifier chacun de leurs rôles dans votre pensée, avant de continuer.