タイプ「X」の配列を含むタイプ「T」の動的配列を作成しようとしています。X から T の属性にアクセスするために、T を指す構造体 X にポインターを作成しようとしました。これは私が持っているコードです。
struct WireSeg; // Forward declaration
struct Track { // Type X in above description
int trackNum;
bool used;
WireSeg* parentWireSeg;
};
struct WireSeg { // Type T in above description
int xCoord;
int yCoord;
char flag;
char orientation;
Track* track;
};
typedef WireSeg* WireSegPtr
int main (void) {
WireSegPtr wireSeg;
wireSeg = new WireSeg[5];
for (int i =0; i<5; i++) {
wireSeg[i].track = new Track[3];
for (int j =0; j<3; j++) {
wireSeg[i].track[j].parentWireSeg = wireSeg[i];
}
}
}
コンパイルエラーが発生します:
エラー: 割り当てで「WireSeg」を「WireSeg*」に変換できません
理解できません。は型ポインタparentWireSeg
として宣言されており、配列内の要素でもあり、ポインタです (そうではありませんか?)。WireSeg
wireSeg[i]
wireSeg
parentWireSeg
私はそれをいじってみましたが、次のタイプであると宣言しましたWireSeg
:
struct Track {
int trackNum;
bool used;
bool flag;
WireSeg parentWireSeg;
};
これによりエラーが発生しました:
「struct Track」には、「parentWireSeg」という名前のメンバーがありません。
Track
構造体は要素として持っているので、これは私にとっても意味がありませんparentWireSeg
! 誰かがこれを説明できますか?Track
を指しているポインターを使用することはできませんWireSeg
か?
これにはおそらく継承されたクラスを使用できますが(できますか?)、誰かが私のメソッドの何が問題なのか教えてくれたらいいのにと思いますか?