Re: [問題] enum用法?

看板C_and_CPP作者 (高髮箍)時間13年前 (2012/07/08 21:44), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串2/3 (看更多)
: → shunren:http://ideone.com/gvaq0 07/07 22:12 仔細看錯誤訊息中 std::transform() 最後一個引數的位置: <unresolved overloaded function type> 這表示你給的引數 tolower 有多個被重載的版本導致編譯器無法決 定該將哪個版本傳進去, 在 C 語言中有一個全域的版本: #include <ctype.h> int tolower(int c); C++ 也有函式模板: namespace std { template <class charT> charT tolower(charT c, const locale& loc); } 雖然說 C++ 的版本並不模塑 std::transform() 最後一個參數要求 的 Concept; 但在產生 std::transform() 實體之前還是要有一個可 被決定的函式被代入才行, 如果你要使用 C 語言的版本: http://ideone.com/zFjME 再來就是用 C++ 的版本: http://ideone.com/0q4Cs C++ 的版本雖然明確指定模板引數, 但最後產生 std::transform() 實體時因為函式呼叫不合規定所以變成編譯錯誤, 正確的解法: http://ideone.com/DDKBZ 最後的解法換成其他字串型態如 std::wstring 也是可以的, 是最通 用的方法, C 語言因為沒有 overloading 的機制, 在切換實作上顯得 笨拙些 C++ 的函式也一起被視為 candidates 的原因是你用 using namespace 把原本那些在 std 底下的名稱給拉進來了, 這時候就不得不用 :: (scope resolution operator) 來鑑別彼此. 不要為了方便而 using namespace, 尤其是你對語言還不熟悉的情況 , 我最多只會寫到 function scope 層級的 using 而已. -- ╔═══╗╔═══╗ ╔═╗═╗╔═══╗╔═══╗╔╦═╦╗ 金栽經║ ╔╗ ║║ ╔╗ ║╔╗║ ║ ║║ ═ ║║ ╔╗ ║║║ ║║RAINNOUS ≡≡║ ╚╝ ║║ ╚╝ ║║║║ ║║ ╞╣║ ║║ ║║ ║ ═╣║ ╥ ║║║║ ║ ║║ ═ ║║ ╚╝ ║║ ║ ║ 高佑麗╚═╩═╝╚═╩═╝╚╝╚═╚═╝╚═══╝╚═══╝╚═╩═╝鄭允慧 趙賢榮金智淑盧 乙吳勝雅ψmocki -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (07/08 21:57)

07/08 22:06, , 1F
function scope是說using寫在function內,非global?
07/08 22:06, 1F

07/08 22:10, , 2F
是的, 在 namespace 底下用也有的, 但要注意不要出現
07/08 22:10, 2F

07/08 22:10, , 3F
header 中
07/08 22:10, 3F

07/08 22:29, , 4F
底下用也有的??抱歉,我有點看不懂意思
07/08 22:29, 4F

07/08 23:52, , 5F
在自己的 namespace 底下 using 其他的 namespace 這樣
07/08 23:52, 5F
文章代碼(AID): #1F-OxDif (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
4
56
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
問題
4
56
文章代碼(AID): #1F-OxDif (C_and_CPP)