我想創建一個包含'X'類型數組的'T'類型的動態數組。爲了從X訪問的T屬性,我試圖創造一個指向T.結構X的指針這是我的代碼有:無法將類型轉換爲類型* - C++編譯錯誤
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];
}
}
}
我得到的編譯錯誤:
error: cannot convert ‘WireSeg’ to ‘WireSeg*’ in assignment
我不明白。 parentWireSeg
已被聲明爲WireSeg
類型指針,而wireSeg[i]
也是wireSeg
數組中的一個元素,並且是一個指針(不是嗎?)。
我試圖玩弄它,並宣佈parentWireSeg
是WireSeg
類型:
struct Track {
int trackNum;
bool used;
bool flag;
WireSeg parentWireSeg;
};
這給了我錯誤:
‘struct Track’ has no member named ‘parentWireSeg’.
這是沒有意義的,我要麼因爲結構Track
確實有parentWireSeg
作爲一個元素!有人可以解釋這個嗎?我不允許在Track
指向WireSeg
?
我可以使用繼承類(可以嗎?),但我寧願如果有人告訴我我的方法有什麼問題?
難道你錯過了'typedef WireSeg * WireSegPtr'這行的分號嗎?這將如何編譯? –
我認爲這只是一個錯字,因爲添加分號給了我們'無法轉換'的錯誤。 – Derek
請將您正在使用的實際代碼與剪貼粘貼,而不是拼寫錯誤。 –