c++ - 依赖模板参数

标签 c++ templates

我的模板函数有两个模板参数(int mint n)。该函数返回一个类 Foo<int r> ,我想要的地方 r=m+n .

在 foo.h 中我有:

template<int m> class Foo {};
template<int m, int n>
Foo<m+n> myFunc(const Foo<m> &a, const Foo<n> &b);

在 foo.cpp 中我有:

Foo<m+n> myFunc(const Foo<m> &a, const Foo<n> &b)
{
    return Foo<m+n>();
}

最后在 main.cpp 中:

#include "foo.h"
int main()
{
    myFunc(Foo<2>(), Foo<3>());
}

如果我尝试这样做,我会收到链接器错误。:

 "undefined reference to `Foo<(2)+(2)> myFunc(Foo<2> const&, Foo<2> const&)'

编辑:编辑以包含完整代码。也许不太清楚,但有些人更喜欢。

最佳答案

您可能将函数体代码放在了错误的位置。对于(非专用)模板函数,您通常希望将整个函数体放在头文件中,而不是源文件,否则编译器无法生成代码调用时的那个函数。

关于c++ - 依赖模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163449/

相关文章:

javascript - Handlebars : TypeError: Cannot read property 'helperMissing' of undefined

c++ - 模板化函数指针作为模板参数

c++ - Boost 的 TCP basic_resolver_query 构造函数的参数

c++ - 如何使 boost 程序选项忽略要由另一个解释器处理的某些输入?

c++ - 在两个进程之间共享数组

c++ - 指针算术符号

c++ - 我可以默认此 Transform 模板函数的返回类型吗?

c++ - 在 C++ 函数中传递原始数据类型的最佳实践

c++ - Open GL ES 2.0 多个drawElements和绘制顺序

c++ - vector 中允许的事件迭代器的数量