看板 C_and_CPP 關於我們 聯絡資訊
template <class T> class A { private: struct node{ T value; }; node* find(T data); }; 如果把 find 的 definition寫在class 裡 相當於inline就沒問題 但如果寫在class 外面(一樣在header file裡) compiler就會過不了 原來是否inline對於這個case會有影響!? 我以為只跟效率有關而已 還是我哪裡搞錯了呢? 謝謝 寫在外面: template <class T> A<T>::node* A::find(T data) { .... } error message: 錯誤 2 error C2143: 語法錯誤 : 遺漏 ';' (在 '*' 之前) 錯誤 3 error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.192
nowar100:寫在外面的寫法你有寫錯,貼上來吧,發問記得附上證據 09/26 15:18
※ 編輯: Dreamer77 來自: 140.112.4.192 (09/26 15:28)
nowar100:你 struct 結束的地方少了分號 09/26 15:30
喔不是 是我這裡露打了XD ※ 編輯: Dreamer77 來自: 140.112.4.192 (09/26 15:31)
nowar100:定義改成這樣 typename A<T>::node* A::find(T data) {} 09/26 15:31
nowar100:打錯 ^ 這裡要加<T> 09/26 15:48
Dreamer77:恩A<T>是這裡少打.. 還是過不了 09/26 15:50
loveme00835:http://codepad.org/ELF6JId6 09/26 15:59
loveme00835:怎麼感覺錯不在這... 09/26 16:00
Dreamer77:可以了感謝!.請問為什麼要加typename嗎 09/26 16:11
loveme00835:= =所以你根本沒看三樓打的囉? 要告訴編譯器冒號後 09/26 16:26
loveme00835:面加的東西是一個型態名稱(type name), 而不是靜態成 09/26 16:26
loveme00835:員或列舉常數 09/26 16:27
Dreamer77:有啦 只是我誤會3F大的意思了 thanks to both :) 09/26 17:19