我想將一個函數指針傳遞給一個類的構造函數。但是,當我嘗試編譯代碼時,出現錯誤。代碼和錯誤是:在構造函數中的C++函數指針
quickfind.h
#ifndef QUICKFIND_H
#define QUICKFIND_H
#endif // QUICKFIND_H
template <class T>
class QuickFind
{
private:
int size;
int *array;
int (*giveIndex)(const void *a);
public:
QuickFind<T>(int n,int (*ptr)(const void *));
void connect (const T* u,const T* v);
bool isConnected(const T* u,const T* v);
};
構造函數定義在文件quickfind.cpp
template <class T>
QuickFind<T>::QuickFind(int n,int (*ptr)(const void *))
{
size=n;
array=new int[n];
giveIndex=ptr;
for(int i=0;i<n;i++)
{
array[i]=i;
}
}
在我的主要功能文件:
int giveIndex (const void *ptr)
{
temp *tptr=(temp*)ptr;
return tptr->getA();
}
int main()
{
QuickFind<temp> *qf=new QuickFind<temp>(10,giveIndex);
}
在這裏,我我得到'undefined reference to QuickFind<temp>::QuickFind(int, int (*)(void const*))'
錯誤。我無法弄清楚問題......請幫忙。
退房[爲什麼模板只能在頭文件中實現?(http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-頭文件)的細節。另外,在頭文件中包含守衛是很奇怪的... – 2013-04-06 15:11:47