看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《slchen (風城遊子(B))》之銘言: : ※ 引述《slchen (風城遊子(B))》之銘言: : : 有兩個程式...其中hamming.cpp裡 : : int distance(vector<int> v1, vector<int> v2); : : 將兩個vector傳給這個function 然後算兩者的hamming distance : : 然後在counting.cpp中 : : vector < vector < int> > L10; : : ....... : : for (int m5=0; m5 < L10.size(); m5++) : : { : : int d2 = distance ( L10[m5],temp); : : 把L10[m5] 和temp(兩者皆為 vector < int> ) 傳給distance這個function : : 但是compile時有錯 : : 好像是說應該用iterator; : : 請問各位大大 應該怎麼改寫呢?... 你自訂的函式名稱和標準函式庫的 template<class Init> iterator_traits<InIt>::difference_type distance(InIt first, InIt last); 衝到了!最簡單的解法就是自己的函式改取不一樣的名字。 這個牽涉到 Argument Dependent Lookup (ADL 又稱 Koenig lookup) 像是 max() 或 min() 這種函式名也很容易衝到。 : 我再把error message po出來好了~~ : error 發生在int d2這一行~~ : In instantiation of `std::iterator_traits<std::vector<int, std::allocator<int : 31 C:\Dev-Cpp\code\counting.cpp instantiated from here : 129 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_iterator_base_types.h no type : named `iterator_category' in `class std::vector<int, std::allocator<int> >' : 在stl_iterator_base_types.h的第129行是寫這樣的 : typedef typename _Iterator::iterator_category iterator_category; : 跟iterator有關的..看不太懂error message~~ C++ 和 template 有關的錯誤訊息真是不好懂呀! XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.168
slchen:謝謝啦~~~... 220.141.56.156 07/29
UNARYvvv:哈..話說我先前也看不出來為何會錯..原來是同名 61.70.137.117 07/29
UNARYvvv:不過若是這種情況,不是應該先以引數型別完全相 61.70.137.117 07/29
UNARYvvv:同的 non-template function match 到嗎?? 61.70.137.117 07/29
UNARYvvv:因為照說他們是在同一個 overloaded set 裡面吧 61.70.137.117 07/29
UNARYvvv:不知道為何反而編譯器會選擇 Standard 版的呢?? 61.70.137.117 07/29
otpgoodop:namespace不同.... 59.115.76.234 08/06