我正在尝试创建一个“T”类型的动态数组,其中包含一个“X”类型的数组。为了从 X 访问 T 的属性,我尝试在 struct X 中创建一个指向 T 的指针。这是我拥有的代码:
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
为 type WireSeg
:
struct Track {
int trackNum;
bool used;
bool flag;
WireSeg parentWireSeg;
};
这给了我错误:
“struct Track”没有名为“parentWireSeg”的成员。
这对我来说也没有任何意义,因为 structTrack
确实有parentWireSeg
一个元素!有人可以解释一下吗?我不允许有一个指向的指针Track
吗WireSeg
?
我可能可以为此使用继承的类(可以吗?),但如果有人告诉我我的方法有什么问题,我更愿意?