在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>;
型
如何显式示例化非模板类的成员模板?
2条答案
按热度按时间huwehgph1#
您可以在
Class.cpp
中使用以下语法:字符串
模板参数可以省略,因为类型推导适用于函数模板。因此,上面的等价于下面的,只是更简洁:
型
请注意,没有必要指定函数参数的名称-它们不是函数(或函数模板)签名的一部分。
yshpjwxd2#
你在
Class.cpp
中试过以下方法吗?字符串