看板 C_and_CPP 關於我們 聯絡資訊
小弟知道伸手牌很不好 但因為自學C++實在有點吃力 所以虛心上來請教大神們很基本的問題 小弟是在dev c++ 4.9.2的環境下做開發 如果有寫一個表頭檔(header file) "通常是將宣告式含入進去,之後在源碼檔再去做定義式" 例如我建一個新的表頭檔 "FunDeclare.h" template <typename elemtype> //(1) void display_message(const string&, const vector<elemtype>&); //(2) 我在表頭檔內做函式的宣告 但是編譯器和我說沒有 string 和 vector 的資料型態 即使我include了string和vector的libary還是編譯錯誤 還在(2)行開頭加了extern只做宣告還是一樣錯 0rz 1. 請問我這樣宣告函式在表頭檔中有什麼問題嗎? 2. 還有想問的是各位大神們是否在建表頭檔的時候都要含入很多libary嗎? 3. 有關template是不是每次在type的時候都要打出(1)這行阿? 即使前面曾經用過elemtype了。如果我後面有要在宣告其他函示, 仍要重新打一次"template <typename elemtype>"。有方法可以只要定義一次template嗎? 感覺這些問題很新手,請大神們鞭小力點 qq -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.190.96 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1504692199.A.CC8.html
hylkevin: namespace? 09/06 18:08
LPH66: 1. namespace 問題, 所有標準的東西都在 std:: 下面 09/06 18:12
LPH66: 然後提醒一下這裡絕對不要 using namespace 09/06 18:13
LPH66: 2. 是, 不過通常會儘量減少在 header 裡引用的標頭檔 09/06 18:14
LPH66: 3. 你不打那一行編譯器就不知道你在做 template 宣告/定義 09/06 18:14
stucode: 新手的話建議還是從一般函數練起 template實作要拆開放 09/06 18:28
stucode: 有時候還需要編譯器支援或者顯式具現化 這些問題可能會 09/06 18:29
stucode: 模糊你學習的焦點 09/06 18:29
damody: 先換ide 09/06 18:29
rbufghj9713: 偷偷跟你說,string在std下 09/06 20:19
nsa1099: 謝謝大大們的建議,可以run了,真的非常感謝 09/07 13:02
Mistyshadowe: 想請問一下不要使用 using namespace 的原因 09/07 19:36
Mistyshadowe: 是避免混淆嗎? 09/07 19:37
grayStone: 污染 09/07 20:26
Killercat: .h裡面 using namespace xxx; 會污染所有include他的 09/07 22:20
Killercat: 檔案 包含被.h include的在內 09/07 22:20
Killercat: 然而.cpp裡面使用就比較沒有問題 因為絕大多數腦袋正常 09/07 22:20
Killercat: 的工程師都會盡可能避免include .cpp 09/07 22:21
Killercat: 當然我也看過天兵寫在precompile header(如stdafx.h)的 09/07 22:21
stucode: 導入整個名稱空間很少有合理使用的場合 09/07 23:43
stucode: 除了放在標頭檔會污染其他檔案外 09/07 23:43
stucode: 在原始碼檔案裡面用也可能會產生問題 09/07 23:43
stucode: 更可怕的是有時候這樣做會讓名稱間偷天換日 09/07 23:43
stucode: 造成難解的執行時期 bug 09/07 23:43
dces4212: ide可以換VS community版 免費的 09/08 03:49