Ma question est comment accéder et modifier un tableau 2D défini dans une classe qui est ami avec une autre classe. Voici quelques détails sur ma question:Accéder à un tableau 2D entre deux classes d'amis
Dans class A
Je déclare et alloue l'espace approprié pour ma matrice 2D (pointeur vers pointeur) u.
Class A
{
public:
friend class B;
long double **u;
int fun;
void make();
};
void A::make()
{
long double **u = new long double *[nx];
for (int i=0;i<nx;i++)
u[i] = new long double [ny];
int fun = 9;
}
Class A
est amis avec Class B
; Je dois utiliser le tableau que j'ai déclaré en Class A
dans une fonction définie dans class B
. Ci-dessous mon Classe B:
class B
{
public:
void get(A*);
};
void B::get(A *pt)
{
using namespace std;
cout << pt->fun;
cout << pt->u[0][0];
}
Je reçois une erreur de bus sur mon deuxième Cout pt->u[0][0]
. Existe-t-il un moyen simple d'utiliser cette configuration, je dois accéder à mon tableau [] []? Je pense que j'obtiens l'erreur parce que le pointeur pointe vers la 1ère entrée de mon tableau, ainsi tout mon tableau 2D est sauvegardé en mémoire en une seule ligne (en pensant à haute voix ici). Je suis un gars Fortran donc ce truc est un peu nouveau pour moi.
Toute aide ou "pointeur" vers d'autres threads utiles serait apprécié.
Merci!
Alberto
Avez-vous appelé 'make()' d'abord ... ? –
Et puisque vous êtes public, le fait que la classe B soit un ami de A ne joue pas vraiment de rôle dans le problème (corrigez-moi si je me trompe) – AlexJF
Oui, oui, j'ai une fonction qui appelle make() et get() .J'obtiens la bonne valeur "cout << pt-> fun;" lorsque je compile et exécute le code – Al007