我寫它的矢量搜索和查找在矢量指針的位置,如果發現是成功的,返回的迭代器的followig功能:如何在類體中調用模板函數?
template<class InputIterator>
InputIterator MainCore::findDeviceAccordingToIP (const char * value)
{
std::vector<Device *>::iterator first,last;
first = this->devList->begin();
last = this->devList->end();
Device *temp;
for (;first!=last; first++){
temp = *first;
if (strcmp(temp->endpoint->IPAddress.c_str(),value) == 0)
{
return first;
break;
}
}
//return false;
}
以上的cpp文件代碼中,我把下面的代碼在* .h文件中MainCore類:
template<class InputIterator>
InputIterator findDeviceAccordingToIP (const char *value);
現在,當我叫我的另一個功能,如:
this->findDeviceAccordingToIP("192.168.2.11");
現在我有兩個questio N:
當我編譯它,我得到以下錯誤:
error: no matching function for call to MainCore::findDeviceAccordingToIP(const char [13])
我怎麼得到回報T和公正booloean和迭代器?
它幾乎看起來像你把你的模板定義在.cpp文件中。你不能那樣做。在中聲明和定義你的模板。h – Blazes 2012-08-08 12:15:55
您的代碼中無需使用模板 - 您可能需要的返回類型是'std :: vector :: iterator' –
Lyth
2012-08-08 12:21:03
嘗試使用std :: string而不是const char *。它更快,更高效。 – 2012-08-08 14:59:44