【发布时间】:2013-04-12 14:32:26
【问题描述】:
在Class.h:
class Class {
public:
template <typename T> void function(T value);
};
在Class.cpp:
template<typename T> void Class::function(T value) {
// do sth
}
在main.cpp:
#include "Class.h"
int main(int argc, char ** argv) {
Class a;
a.function(1);
return 0;
}
我收到一个链接错误,因为 Class.cpp 从未实例化 void Class::function<int>(T)。
您可以使用以下命令显式实例化模板类:
template class std::vector<int>;
如何显式实例化非模板类的模板成员?
谢谢,
【问题讨论】:
-
我在这篇关于 boost 序列化库的博文中提出了这个问题:timoch.com/blog/2013/04/boost-serialization-coupling-issue