This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?
(32个答案)
5年前关闭。
我正在尝试用C ++写一个
要么
这是上述代码行的函数声明/定义。
我来自PHP / Laravel背景,所以我想创建类似于
我必须怎么做才能使以上代码正确链接?
(32个答案)
5年前关闭。
我正在尝试用C ++写一个
Config
类,我想要像myConfig->get<ANYTYPE>(str key, ANYTYPE default)
这样的语法。我一直在玩模板,我想我已经很接近了,但是我不断收到如下错误:// caused by config->get<bool>("fullscreen", false);
error: undefined reference to `bool const Config::get<bool>(char*, bool) const'
要么
// caused by config->get<int>("width", 800);
error: undefined reference to `int const Config::get<int>(char*, int) const'
这是上述代码行的函数声明/定义。
template<typename T>
const auto get(char* key, T def) const -> T
{
T ret = _config[key].as<T>();
if( ret )
return ret;
return def;
}
我来自PHP / Laravel背景,所以我想创建类似于
Input::get("elName", "defaultValue");
的东西我必须怎么做才能使以上代码正确链接?
最佳答案
通常,模板定义在使用时必须可用。
这意味着您必须将定义本身放置在头文件中,而不是像传统上使用非模板代码那样放置在单独的源文件中。如果不这样做,则在使用该代码时将无法生成该代码,因此会出现错误。
或者,您可以在某处的源文件中explicitly instantiate一组有用的类型。
关于c++ - 如何在C++中返回变量类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26580092/