1

相互に依存する構造の配列がたくさんあります。別の構造体の配列内のレコードへのメンバー変数ポインターに苦労しています。参照用に3つの構造体を配置

struct struct1 {
int node_id;
struct2* ptr; };

struct struct2 {
int node_id;
int type;
struct1* owner;
struct2* next;
struct2* previous;
struct3* block1;
struct3* block2; };

struct struct3 {
int node_id;
int n_entries;
struct3* next_block; };

今私の質問は、struct1のレコードをフェッチする方法です。私はそれが次のようになることができることを知っていました

struct1 pstruct1;

struct2 pstruct2;

pstruct.ptr = &pstruct2;

おそらく、各構造体に1セットのレコードがある場合。しかし、これに似たものであれば、構造体の配列に何を使用する必要がありますか?

pstruct1[i].ptr = &pstruct2[j];

'j'値を見つけるにはどうすればよいですか?また、関数の呼び出しから渡された構造を受け入れるように、未定義のメンバー変数の引数structを使用して共通関数を作成することは可能ですか?私のコーディングのいずれかが間違っている場合は申し訳ありません。前もって感謝します。

4

1 に答える 1

1

これは正しいです

pstruct.ptr = &pstruct2;

これは正しいです

pstruct1[i].ptr = &pstruct2[j];

あなたの最初の質問「どうすればj値を見つけることができますか?」

私にはわかりません。それはあなたのプログラムであり、それが何をするのか、そしてjがどのように計算されるのかを知ることができるのはあなただけです。

2番目の質問「未定義のメンバー変数の引数structを使用して共通関数を記述し、関数の呼び出しから渡された構造を受け入れることもできますか?」

テンプレート関数について話していると思います。

template <class T>
void common_function(const T& struc)
{
}

その関数は任意の構造体で呼び出すことができます。しかし、テンプレートは難しいトピックです。テンプレートを説明するC++に関する本を入手する必要があります。

于 2012-08-09T11:39:55.407 に答える