[問題] 除錯: ISO C++ forbids declaration of …

看板C_and_CPP (C/C++)作者 (NA)時間14年前 (2011/08/23 21:50), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Mac 寫基本的串列插入資料 用教科書的程式碼輸入 最後出現錯誤訊息: ISO C++ forbids declaration of 'link' with no type 想請大家解惑一下 找了一些資料還是看不懂... 謝謝~! #include <iostream> //請參閱9.4節說明 using namespace std; //請參閱9.4節說明 class Student //自定Student資料 { int student_id; char student_name[40]; public: friend istream& operator >> (istream& in, Student& obj) { in >> obj.student_id >> obj.student_name; return in; } friend ostream& operator << (ostream& out, Student& obj) { out << obj.student_id << '\t' << obj.student_name; return out; } }; struct link //定義link資料結構 { Student data; //Student型態資料 link *next; //link型態指標 }; class linklist //串列資料類別 { link *firstPtr; //串列起始指標 link *lastPtr; //串列結束指標 public: linklist() { firstPtr = lastPtr = NULL; } //建立者 void addFront (Student obj); //宣告插入第一項原型 void addBack (Student obj); //宣告插入最後項原型 void showItem(); //宣告顯示串列原型 }; void linklist::addFront (Student obj) //定義插入第一項函數 { link *newPtr = new link; newPtr->data = obj; if (firstPtr == NULL) { firstPtr = lastPtr = newPtr; lastPtr->next = NULL; } else { newPtr->next = firstPtr; firstPtr = newPtr; } } void linklist::addBack (Student obj) //定義插入最後項函數 { link *newPtr = new link; newPtr->data = obj; if (firstPtr == NULL) { firstPtr = lastPtr = newPtr; lastPtr->next = NULL; } else { lastPtr->next = newPtr; lastPtr = newPtr; lastPtr->next = NULL; } } void linklist::showItem() //定義顯示串列資料函數 { link *currentPtr = firstPtr; while( currentPtr != NULL) { cout << currentPtr->data << endl; currentPtr = currentPtr->next; } } int main() { Student studata; //定義Student物件 linklist ls; //定義linklist物件 char n; while(1) { cout << "1.插入第一項 2.插入最後項 0.結束 請選擇(1,2或0): "; cin >> n; switch (n) { case '1': cout << "請輸入學號與姓名:" ; cin >> studata; ls.addFront(studata); ls.showItem(); break; case '2': cout << "請輸入學號與姓名:" ; cin >> studata; ls.addBack(studata); ls.showItem(); break; case '0': return 0; } cout << endl; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 68.70.61.100

08/23 21:52, , 1F
類別名稱打錯了
08/23 21:52, 1F

08/23 22:21, , 2F
class linklist 名稱打錯嗎@@?
08/23 22:21, 2F

08/23 22:49, , 3F
節點的類別
08/23 22:49, 3F

08/23 23:35, , 4F
不好意思 我還是看不出節點的類別是哪裡出錯 可以用code
08/23 23:35, 4F

08/23 23:35, , 5F
跟我講一下嗎 謝謝!
08/23 23:35, 5F

08/23 23:48, , 6F
你先解釋一下,所謂的 link 型態指標裡的 link 是什麼
08/23 23:48, 6F
※ 編輯: Nozaki 來自: 68.70.61.100 (08/24 00:06)

08/24 00:10, , 7F
請問您是說strcuk link的地方多打一個link嗎?我已經改了
08/24 00:10, 7F

08/24 00:10, , 8F
但還是錯誤QQ
08/24 00:10, 8F

08/24 00:18, , 9F
改了就好啦,我用你的程式碼在 Windows 可以編譯出執行檔
08/24 00:18, 9F

08/24 10:14, , 10F
2但我用Mac跑不出來耶@@?
08/24 10:14, 10F

08/24 10:42, , 11F
link在linux和Mac都是定義在unistd.h裡的函數
08/24 10:42, 11F

08/24 10:43, , 12F
所以你的link要改別的名字
08/24 10:43, 12F

08/24 20:07, , 13F
解決了 感謝大家熱心回答orz
08/24 20:07, 13F
文章代碼(AID): #1EKx0Fvo (C_and_CPP)
文章代碼(AID): #1EKx0Fvo (C_and_CPP)