用于获取静态成员变量模板的多个已定义链接器错

时间:2016-11-15 15:21:23

标签: c++ templates variable-templates

当我有一个可以归结为类似的课程时:

// test.hpp
class Test{
public:
  template<typename T> static T value;
};

template<typename T> Test::value = {};

当我只在一个.cpp文件中查找实例化的value时,我可以使用这个类。但是当我尝试在多个.cpp文件中使用它时,我得到一个已定义的链接器错误。

//somefile1.cpp
include "test.hpp"
void fn(){
  int i = Test::value<int>;
}

// somefile2.cpp
include "test.hpp"
void otherfn(){
  // public static int value already defined in somefile1.obj
  int j = Test::value<int>;
}

template<typename T> Test::value = {}放入其自己的.cpp文件中会为所有用途提供未解决的外部错误。有什么问题?

0 个答案:

没有答案