template声明的函数编译引起的LNK2001无法解析的外部符号错误
mob 发布于 2022-11-27

之前有个模板函数和主逻辑程序写在同一个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,则不会报错

mob
关注 私信
文章
61
关注
0
粉丝
0