分开静态成员模板的声明和定义

时间:2018-08-10 09:29:43

标签: c++

我想实现一个配置程序,在其中使用“获取”功能来获取值。所以首先我有两个如下的代码块。

//config.h
class Config
{
public:
  template <typename T>
    static T get(const std::string& key);
    /* { */
    /*        return T(config_->file_[key]); */
    /* } */
};
-----Split Line-----
//config.cpp
template <typename T>
  T Config::get(const std::string& key)
  {
    return T(Config::config_->file_[key]);
  }

在主要功能中,

double abc = Config::get<float>("abc");

但是链接器给我这样的错误"undefined reference to 'float Config::get<float>(std::string const&)'"

但是,如果取消注释config.h中的部分并删除co​​nfig.cpp的实现,那么它将起作用。

我想知道为什么它不能分开声明和定义以及如何使它们起作用。

0 个答案:

没有答案