[英]Forward declare a function with template parameter of derived class
[英]How do I forward declare a class derived from a forward declared template base class?
我正在嘗試轉發聲明一個 class,它派生自模板 class,該模板也必須轉發聲明。
這是類的示例:
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 名稱:
class Derived;
您不能在其聲明中包含有關 class 的更多信息; 基類、成員等只能在class定義中聲明。
此前向聲明可用於執行各種操作,包括聲明指針或引用(例如您的示例中的pDerived
),以及聲明以Derived
作為參數或返回類型的函數。 如果您需要做任何需要知道類的大小、基類或成員的事情,那么您將需要完整的定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.