模板子类的模板类型错误

时间:2019-08-11 19:26:30

标签: c++ templates

我今天正在尝试使用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> >

0 个答案:

没有答案