我想将一个函数指针传递给一个类的构造函数。但是,当我尝试编译代码时,出现错误。代码和错误是:在构造函数中的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