C ++使用子类从模板继承

时间:2014-04-24 11:30:25

标签: c++ templates inheritance nested-class

我想创建一个父类Foo继承自模板,其参数是自己的嵌套类Sub但是Sub没有得到Foo,你有吗?解决方案?

class Foo : public Bar<Sub>
{
    class Sub
    {
    }
}

由于

解决方案:没有“通用”方法可以做到这一点,所以最好的解决方案是将嵌套类带出来。

1 个答案:

答案 0 :(得分:4)

不,这是不可能直接的,只是因为名称Sub在您想要使用它时不在(并且不能)范围内。如果您不能简单地移出类(您需要将其作为成员访问),您可以通过使用一个非常独特的名称移动嵌套类来解决它,在类中为它提供typedef,如果必要的,使它成为friend

class Foo_Sub_ce60eba1_67fa_48a3_b5f5_fce89d717839
{
  // Contents...
};

class Foo : Bar<Foo_Sub_ce60eba1_67fa_48a3_b5f5_fce89d717839>
{
  typedef Foo_Sub_ce60eba1_67fa_48a3_b5f5_fce89d717839 Sub;
  friend Sub;
};