之前有个模板函数和主逻辑程序写在同一个main.cpp文件,编译正常,后面想移到独立的common.h和对应的common.cpp文件,编辑没提示错误,编译报了LNK2001,
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
如果在main.cpp不调用就不会报错,其他函数在main,cpp中调用不会报错,看来是因为template函数特殊,把SafeRelease对应类型的所需头文件也引用到common.h和对应的common.cpp文件,测试还是报错,但如果SafeRelease函数只在common.h文件中定义,而不分开为声明在common.h,定义实现在common.cpp,则不会报错