我正在尝试转发声明一个派生自模板类的类,该模板类也必须转发声明。
这是类的一个例子:
class TType {
public:
TType() { }
};
template<typename T>
class Base {
public:
Base() { }
};
class Derived : public Base<TType> {
public:
Derived() { }
};
这是对我需要什么的失败猜测:
class TType;
template<typename T> class Base;
class Derived : public Base<TType>; // This fails
Derived* pDerived;
最佳答案
只需向前声明类名:
class Derived;
您不能在其声明中包含有关类的更多信息;基类、成员等只能在类定义中声明。
此前向声明可用于做各种事情,包括声明指针或引用(例如您示例中的 pDerived
),以及声明带有 Derived
的函数作为参数或返回类型。如果您需要做任何需要知道类的大小、基类或成员的事情,那么您将需要完整的定义。
关于c++ - 如何转发声明从转发声明的模板基类派生的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032275/