在下面的代码中:
class foo{};
class bar{};
template<class Type1=foo,class Type2=bar>
class A{};
template <class T= A<>>
class B
{
public:
void func(typename T::Type1 a){} //error 'Type1' : is not a member of 'A<foo,bar>'
};
int main()
{
B<> b;
b.func(foo()); //error
}
我想访问B
模板的parametr(Type1
和Type2
在这种情况下)我怎样才能使它工作?!
您需要“导出”类型,即将它们声明为类模板的公共类型。例如
template<class T1=foo,class T2=bar>
class A
{
public:
typedef T1 Type1;
typedef T2 Type2;
};
C ++ 11风格
template<class T1=foo,class T2=bar>
class A
{
public:
using Type1 = T1;
using Type2 = T2;
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句