我今天正在尝试使用C ++模板,并陷入了这段代码中。
template <typename T>
class XYZ
{
public:
T t;
};
template <typename A>
class Foo
{
public:
template <typename C>
class Bar
{
public:
C a;
};
Bar < A > fx ();
XYZ < Bar <A> > gx ();
};
template <typename A>
Foo<A>::Bar <A> Foo <A> :: fx ()
{
return Bar <A> ();
}
template <typename A>
XYZ < Foo <A> :: Bar <A> > Foo <A> :: gx ()
{
XYZ < Foo <A> :: Bar <A> > xyz;
xyz.t = Foo <A> :: Bar <A> ();
return xyz;
}
int main ()
{
Foo <int> foo;
foo.fx();
foo.gx();
}
编译器在gx()
的函数声明中说,返回类型A
的{{1}}中Bar <A>
的类型不匹配,我绝对不知道为什么过去三个小时。
如果有帮助,这是确切的编译器消息。
XYZ < Foo <A> :: Bar <A> >