私の質問は、あるクラスで定義された別のクラスの友人である2D配列をアクセスして修正する方法です。以下は私の質問に関するいくつかの詳細です:2つのフレンドクラス間の2D配列へのアクセス
class A
私は、私の2D配列(ポインタへのポインタ)の適切なスペースを宣言し、割り当てます。
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];
}
私の2番目のcoutにバスエラーが発生しましたpt->u[0][0]
。私は私のu [] []配列にアクセスする必要があるこの設定を使用する簡単な方法はありますか?私はポインタが私の配列の1番目のエントリを指しているので、エラーが出ると思います。したがって、私の2D配列全体がメモリに1行として保存されます(ここで大声で考えています)。私はFortranの人ですので、このことは私にとっては少し新しいものです。
他の有益なスレッドへの助けや "ポインタ"をいただければ幸いです。
ありがとうございました!
アルベルト
あなたが最初 ')(作る'電話したを変更する必要があり、あなたがエラーを取得すると思います... ? –
Uは公開されているので、クラスBがAの友人であるという事実は、実際に問題に関与していません(私が間違っていれば正解)。 – AlexJF
はい、私はmake – Al007