精華區beta ck54th329 關於我們 聯絡資訊
※ 引述《Upsha (Marin hardtail好棒)》之銘言: : ※ 引述《Quezacot (報告三連發)》之銘言: : : #include<iomanip> : : using std::setioflags; : : using std::setprecision; : : 使用 : : setioflags(ios::left) : : setiosflags( ios::fixed | ios::showpoint ) : : compile顯示 : : error C2653: 'ios' : is not a class or namespace name : 下面三個都是因為這個來的 因為那些都是ios的member : using std::ios;應該有用吧 : 至少比我上個作法好多了... : : error C2065: 'left' : undeclared identifier : : error C2065: 'fixed' : undeclared identifier : : error C2065: 'showpoint' : undeclared identifier : : 怎麼會這樣?? 解釋一下 我之前說說過 每組 { } 都可以視做一種namespace 而你可以替namespace取名字的 常用的class也是一種namespace的觀念 發明namespace的目的是要避免命名污染 如果某甲在他的程式裡面用了個叫做a的變數 假設某乙include了某甲的檔案 那某乙在他的程式裡面就不能用到a這個變數名稱 這樣還不是最嚴重的情形 考慮當某乙寫好了一個程式庫 發現某甲的程式庫某部分他可以用 那他就在include進來 這時如果發生命名污染 才是大災難 所以透握namespace的機制 programmer可以嚴格的篩選 他要的東西在他的程式裡『可見』 是的 就算你有include進來 只要沒有using就是不可見的 而整個C++ standard都是建立在std這個 namespace裡面所以using namespace std 是很常見的作法 當然 當你有需要的時候 救可以向永任上面的那麼做 最後 說明為啥米using std::ios;就ok 因為ios是個定義在std namespace裡面的class 故可以是做一個sub-namespace 如果要讓ios裡面的東西可見 就需要using std::ios;摟 ok 就醬 -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 218.160.3.150 ※ 編輯: Upsha 來自: 218.160.3.150 (11/24 00:44) ※ 編輯: Upsha 來自: 218.160.3.150 (11/24 00:46)