编辑:这是不是标准模板问题的副本。在模板类中,如何定义具有不同类型名称的函数
我的场景涉及模板类和类蒙山一个参数是模板的成员函数,而不是同类型的类。
即使当我把定义中的标头,我仍然无法找到正确的语法。
有人可以帮助我与我的具体问题?
我过于简单的代码:
了foo.h:
template<typename T1>
class Foo {
public:
template<typename T2>
static void bar(vector<T1>& a, vector<T2>& b);
};
Foo.cpp中:
#include <Foo.h>
template<typename T1>
template<typename T2>
void Foo<T1>::bar(vector<T1>& a, vector<T2>& b) {
//code logic
}
Goo.cpp:
#include <Foo.h>
int main(int argc, char** argv) {
vector<int> a;
vector<double> b;
Foo<int>::bar(a, b);
}
我的错误:
undefined reference to
void Foo<int>::bar<double>(std::vector<int, std::allocator<int> >&,
std::vector<double, std::allocator<double> >&)
我找不到合适的方式来定义的模板。
我也注意到,typenames的顺序将改变错误(也把整个函数在类声明)。
什么是正确的语法?
为什么你认为这是不是重复?你不能在源文件中定义模板。 “即使我把这个定义放在标题中,我仍然找不到正确的语法。” ...那你为什么不用头部中的定义显示代码? – user463035818
如果你[编辑]这个问题向我们展示了在头文件中定义的模板成员函数的代码,我们可以重新打开它。用于简化代码的荣誉 - 确保编辑后的简化版本仍然失败,并包含错误消息。 (如果你在评论中提到我,我想我可以单独重新打开它。) –
你的Foo.h有一个错字和一个缺失的分号。请仅复制并粘贴实际尝试编译的代码,并验证是否收到声明的错误消息。 – aschepler