我目前正在学习模板如何在 C++ 中工作。特别是,我正在查看类模板中的单个成员函数模板。为了理解我的意思,代码如下。
// foo.h
template<typename A>
class foo {
template<typename B>
void boo(B);
};
// foo.cpp
template<typename A>
void foo<A>::boo(B value) {} // compiler error: 'Unknown' type name B
// or if I try this
template<typename B>
void foo<A>::boo(B value) {} // compiler error: Use of undeclared identifier A
我正在尝试使用两种类型名称,一种来自类模板,另一种来自单个文件模板,用于该特定功能。但在上面的两个版本中,我遇到编译器错误。我该如何绕过这个问题?
需要两组模板参数来定义会员模板 https://en.cppreference.com/w/cpp/language/member_template.
(强调我的)
如果封闭类声明又是类模板,则当成员模板在类主体之外定义时,它需要两组模板参数:一组用于封闭类,另一组用于自身:
E.g.
template<typename A>
template<typename B>
void foo<A>::boo(B value) {}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)