以下模板函数的使用fCompare()
是否正确?
//标题
template<typename _T > class SomeClass
{
typedef int (*COMPAREFUNC)(_T*,_T*);
COMPAREFUNC Compare;
public:
void SetCompareFunction(COMPAREFUNC pfC) { Compare=pfC; }
...
};
template<typename _T > int fCompare(_T *pO, _T *pN)
{
if (pN==NULL) throw (const char*)"Null not allowed";
if (pO!=NULL) return (*pO > *pN)?1:(*pO < *pN)?(-1):0;
return 0;
}
//代码
SomeClass<int> aC;
aC.SetCompareFunction(fCompare<int>); // <******* here
...
我担心的是从模板创建实例函数的位置:它看起来像堆栈,但在我用来测试它的其他代码中,我试图敲击堆栈,然后Compare()
继续进行。我可以安全地使用这样的模板吗?