class XY{};
template<typename typeA>
class A
{
(...)
};
template<typename typeB>
class B
{
(...)
};
(...)
B<class <class XY>A> * attribute; // <- How can I do that without Syntaxerror
尝试此gcc时会出现以下错误:
xy.h:19:错误:模板参数1无效
我该如何避免?
答案 0 :(得分:3)
class
关键字仅用于定义模板类,而不用于声明对象。为此,您只需要:
B<A<XY> >* attribute;
或者为了清楚起见将其展开:
typedef A<XY> MyA;
typedef B<MyA> MyB;
MyB* attribute;
答案 1 :(得分:1)
你的问题很不清楚,但我认为你是在模板模板参数之后。这样:
template <template <class> class U>
class Foo {};
现在Foo
是一个类模板,接受另一个类模板作为其参数,如下所示:
template <class V>
class Bar {};
Foo<Bar> theFoo;