在下面的代码中:
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
模板的参数(在这种情况下为Type1
和Type2
)如何才能使其正常工作?!
答案 0 :(得分:4)
你需要&#34;导出&#34;类型,即将它们作为类模板的公共类型。例如
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;
};