是否可以继承以子类作为模板参数的类?
DELETE
答案 0 :(得分:5)
是的,你可以做到。
您的问题似乎是错误‘A<T>::t’ has incomplete type
。请参阅示例here。
如果你
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;
}