我必須做一個通用的雙鏈表,和我在vC++ 2010做到了,一切運作良好,但我已經用gcc來編譯它,但它無法編譯它。當我打電話,其具有一個迭代作爲參數的方法,我得到這個錯誤:用於調用...錯誤與模板類沒有匹配功能
no matching function for call to 'DLList<int>::Erase(DLList<int>::iterator, DLList<int>::iterator)'|
[...]note: candidates are: void DLList<T>::Erase(DLList<T>::iterator&, DLList<T>::iterator&) [with T = int]|
的DLLIST是在.h文件中,和內聯定義的每個方法。迭代器類也在DLList類中。
template<typename T>
class DLList{
[...]
public:
[...]
void Erase(iterator &_first, iterator &_last){...}
iterator first(){...}
iterator last(){...}
[...]
class iterator{...}
[...]
};
而且這將導致錯誤的代碼:
iList.Erase(iList.first(), iList.last());
(ILIST:DLLIST < int>的ILIST)
我怎樣才能解決這個問題?
這工作得很好。我沒有修改擦除函數的簽名,而是在列表(it1和it2)之後聲明瞭2個迭代器,然後iList.Erase(it1 = iList.first(),it2 = iList.last());很好。 – gberes 2011-05-10 22:02:55