我有一个带有单独的声明和实现的模板类:
// template.hpp
template <typename T>
class Foo {
T _data;
void func();
};
// template.cpp
#include "template.hpp"
template <typename T>
void Foo<T>::func() {
// Do something on _data
}
这些模板文件将被编译到一个库中,在另一个cpp文件中,我链接该库并实例化模板类,如下所示:
// my.cpp
#include "template.hpp"
struct MyData {
// Some data here
};
class Bar {
Foo<MyData> foo;
};
编译my.cpp
文件时出现链接器错误。是否可以通过仅修改template.hpp
和template.cpp
来避免链接程序错误?
我不想将模板实现移动到头文件中,也不能将MyData
移到template.hpp
中。