我想实现一个配置程序,在其中使用“获取”功能来获取值。所以首先我有两个如下的代码块。
//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中的部分并删除config.cpp的实现,那么它将起作用。
我想知道为什么它不能分开声明和定义以及如何使它们起作用。