我还在学习C++的过程中。这是我的场景。我有三个班。最顶层的基类是模板化的。从基础派生的中间类也是模板化的。我打算使用的派生(具体类)继承了中间类。我明确地实例化了中间类。但是,编译器每次说 Base 类未定义时都会抛出一个错误。如何以完全定义基类的方式实例化中间类?
以下是如何定义这些类的概述:
TopBase.h
template <class T>
class TopBase
{
typedef typename T::Concrete Concrete;
}
中间.h
template <class T>
class Middle : public TopBase<T>
{
typedef typename T::Concrete Concrete;
}
Middle() : TopBase<T>() {}
具体的.h
struct TConcrete {
static int x;
typedef Concrete instance;
}
class Concrete :
public Middle<TConcrete>
{
}