我採取一個哈希表我自己,發現了以下錯誤:C++模板類編譯錯誤
19 template <class key, class value>
20 class HashEntry { ... }
60 template <class key, class value>
61 class HashTable
62 {
63
64 private:
65 size_t _tableSize;
66 HashEntry<key, value>** _table;
67
68 public:
69
70 HashTable(size_t s)
71 {
72 _tableSize = s;
73 _table = (HashEntry<key, value>**) smalloc(s * sizeof(HashTable<key, value>*));
74 }
75
76 void addEntry(HashEntry<key, value>(key k, value v)) <---
77 {
78
79 }
80
...
91 };
93 int main()
94 {
95 HashTable<int, string> t(100);
96 t.addEntry(HashEntry<int, string>(1, string("a"))); <---
HASH_chaining.cc:96: error: no matching function for call to ‘HashTable<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::addEntry(HashEntry<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)’
HASH_chaining.cc:76: note: candidates are: void HashTable<key, value>::addEntry(HashEntry<key, value> (*)(key, value)) [with key = int, value = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]
在一眼,我便無法找到任何毛病。我認爲它與我定義addEntry接口的方式有關。
謝謝。
將'void addEntry(HashEntry(key k,value v))'改爲'void addEntry(key k,value v)'? –
ildjarn
2013-02-23 00:35:00
ildjarn謝謝! – Figo 2013-02-23 00:38:24