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

C++ inherit from a template using subclass

本文关键字:继承 子类 C++      更新时间:2023-10-16

我想创建一个父类Foo,它继承自一个带有参数的模板——它自己的嵌套类Sub,但不从Foo中获得Sub,你有解决方案吗?

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

感谢

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

不,这不可能直接实现,因为当你想使用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;
};