[問題] 有關template, inline, private member …

看板C_and_CPP (C/C++)作者 (追夢)時間15年前 (2010/09/26 15:16), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/1
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

09/26 15:18, , 1F
寫在外面的寫法你有寫錯,貼上來吧,發問記得附上證據
09/26 15:18, 1F
※ 編輯: Dreamer77 來自: 140.112.4.192 (09/26 15:28)

09/26 15:30, , 2F
你 struct 結束的地方少了分號
09/26 15:30, 2F
喔不是 是我這裡露打了XD ※ 編輯: Dreamer77 來自: 140.112.4.192 (09/26 15:31)

09/26 15:31, , 3F
定義改成這樣 typename A<T>::node* A::find(T data) {}
09/26 15:31, 3F

09/26 15:48, , 4F
打錯 ^ 這裡要加<T>
09/26 15:48, 4F

09/26 15:50, , 5F
恩A<T>是這裡少打.. 還是過不了
09/26 15:50, 5F

09/26 15:59, , 6F

09/26 16:00, , 7F
怎麼感覺錯不在這...
09/26 16:00, 7F

09/26 16:11, , 8F
可以了感謝!.請問為什麼要加typename嗎
09/26 16:11, 8F

09/26 16:26, , 9F
= =所以你根本沒看三樓打的囉? 要告訴編譯器冒號後
09/26 16:26, 9F

09/26 16:26, , 10F
面加的東西是一個型態名稱(type name), 而不是靜態成
09/26 16:26, 10F

09/26 16:27, , 11F
員或列舉常數
09/26 16:27, 11F

09/26 17:19, , 12F
有啦 只是我誤會3F大的意思了 thanks to both :)
09/26 17:19, 12F
文章代碼(AID): #1CdlDFqb (C_and_CPP)
文章代碼(AID): #1CdlDFqb (C_and_CPP)