【发布时间】:2011-07-21 23:50:04
【问题描述】:
##A.hh
template<class T> void func(T t) {}
template<> void func<int>(int t) {}
void func2();
##A.cpp
void func2() {}
##main.cpp
func("hello");
func(int());
我得到的错误是:error LNK2005: "void __cdecl func(int)" (??$func@H@@YAXH@Z) 已经在 A.obj 中定义, 找到一个或多个多重定义的符号
函数模板特化不被视为普通函数模板吗?看起来它会在 A 的目标文件中。
【问题讨论】:
-
func2和它有什么关系? -
从您的错误消息中,我假设您使用 VC。你的程序对我来说在 VS2005 上运行良好
-
@Space_C0wb0y 所以我有一些东西要放在 A.cpp 文件中
-
我正在使用 Visual Studio 2010
标签: c++ templates template-specialization