Мой вопрос - как получить доступ и изменить 2D-массив, определенный в одном классе, который дружит с другим классом. Ниже приведены некоторые подробности по моему вопросу:Доступ к двумерному массиву между двумя классами друзей
В class A
Я объявляю и выделяю подходящее пространство для своего 2D-массива (указатель на указатель) 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
дружит с Class B
; Мне нужно использовать массив, объявленный в Class A
, в функции, определенной в class B
. Ниже мой класс B:
class B
{
public:
void get(A*);
};
void B::get(A *pt)
{
using namespace std;
cout << pt->fun;
cout << pt->u[0][0];
}
я получаю ошибку шины на моей второй соиЬ pt->u[0][0]
. Есть ли простой способ использовать эту настройку, я должен получить доступ к своему массиву u [] []? Я думаю, что получаю ошибку, потому что указатель указывает на первую запись моего массива, поэтому весь мой 2D-массив сохраняется в памяти как одна строка (вслух здесь). Я парень Фортрана, поэтому этот материал для меня немного новый.
Любая помощь или «указатели» на другие полезные темы были бы оценены.
Спасибо!
Альберто
ли вы назвать 'сделать()' первый ... ? –
И поскольку u является общедоступным, тот факт, что класс B является другом A, действительно не играет роли в проблеме (исправьте меня, если я ошибаюсь). – AlexJF
Да, у меня есть функция, которая вызывает make() и get(). Я получаю правильное значение «cout << pt-> fun», когда компилирую и запускаю код. – Al007