单独的模板类声明和实现

时间:2019-12-28 23:09:44

标签: c++ templates linker-errors

我有一个带有单独的声明和实现的模板类:

// 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.hpptemplate.cpp来避免链接程序错误?

我不想将模板实现移动到头文件中,也不能将MyData移到template.hpp中。

0 个答案:

没有答案