簡體   English   中英

如何轉發聲明從轉發聲明的模板庫 class 派生的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM