使用子类作为模板参数继承类

时间:2015-07-12 07:15:31

标签: c++ templates inheritance

是否可以继承以子类作为模板参数的类?

DELETE

3 个答案:

答案 0 :(得分:5)

是的,你可以做到。

您的问题似乎是错误‘A<T>::t’ has incomplete type。请参阅示例here

如果你

  1. 在A和
  2. 之前声明B.
  3. 在结构A中使用指针,效果很好。
  4. struct B;
    template<typename T>
    struct A{
        T *t;
    };
    struct B : A<B>{
        unsigned u;
    };
    int main(){
        B b;
    }
    

答案 1 :(得分:0)

可能

Template <class T>
struct A {};

struct B : public A<B> {};

它不适用于容器。参见Stroustrup 19.2.4 p686的“编程原则和实践第2版”。

答案 2 :(得分:0)

你可以,但在你的情况下它不能,你不能将它用作非静态数据成员。

template<typename T>
struct A{
  static T t;
};
template<typename T>
T A<T>::t=T();

struct B:A<B>{
  unsigned u;
};

int main(){
  B b;
}