※ 引述《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)