我必須聲明爲這樣的模板類的成員函數:C++模板沒有匹配的函數調用
template <class T>
int Data<T>::getPosition(vector<T> stuff, T newStuff, bool ascending)
我把這個地方與線
frequencies.insert(frequencies.begin() + getPosition(frequencies, current, ascending),
frequencies[i]);
該行的變量聲明爲:
vector<T> temp;
vector<int> frequencies;
int current = frequency.find(words[i])->second;
但是,致電getPosition
的電話給出了此錯誤:
Data.h|158|error: no matching function for call to 'primitives::Data<double>::getPosition(std::vector<int, std::allocator<int> >&, int&, bool&)'|
Data.h|165|note: candidates are: int primitives::Data<T>::getPosition(std::vector<T, std::allocator<_CharT> >, T, bool) [with T = double]|
我在做什麼錯在這裏?
您需要提供更多的上下文,因爲不清楚如何選擇模板參數T.你是從primitives :: Data的另一個成員函數調用它嗎? – Stewart 2010-11-20 20:13:51
另外,你可能不想通過值傳遞一個向量 - 這將複製向量,但你可能會發現你可以通過const ref傳遞它,這是更有效得多 – Stewart 2010-11-20 20:14:48
@Stewart yes all that代碼位於基元:: Data類的內部。另外,謝謝你的建議;我將實現const引用 – wrongusername 2010-11-20 20:30:45