簡體   English   中英

C ++中模板參數的類繼承

[英]Class inheritance of template parameters in C++

我是C ++的新手,碰巧遇到了一個看起來像這樣的代碼:

template<class T, class Composite> class CompositeTester: public Composite
{
  public: 
    CompositeTester(T* instance, const typename Composite::Parameters& parameters) : Composite(parameters)
    {
        singletonInstances_[parameters.instanceIndex] = instance;
    }
}
  1. 繼承對我來說還不太清楚,因為繼承來自模板類參數本身。 這個概念被稱為什么?
  2. 在構造器CompositeTester ,我才知道的實例Composite與創建parameters作為參數。 但是這種語法很難理解const typename Composite::Parameters 如何解釋這種語法? 定義類復合對象是否有效?

  3. singletonInstances_[parameters.instanceIndex] = instance 這里是為parameters.instanceIndex創建的新變量嗎? 除了我在這里的問題中提到的內容之外, class Composite::Parametersclass Composite的源代碼中沒有定義。

  1. 這就是奇怪的重復模板模式

  2. typename在此處用於表示從屬類型名稱。 沒有它,編譯器會將合格名稱解析為非類型實體。 請參閱以下常見問題解答: 為什么必須在何處以及為什么要放置“模板”和“類型名”關鍵字?

  3. 這在標准C ++中格式錯誤,因為未聲明singletonInstances_ 如果在基類中聲明了它,則需要使用this->使其成為從屬名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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