簡體   English   中英

std :: array與非專業的模板類

[英]std::array with unspecialized template class

是否可以通過某種方式將非專業的模板類作為模板參數傳遞給std :: array? 類似於以下內容:

template <class T>
class Field{
};

std::array<Field> a;

或者我必須定義一些BaseField,並將其細分為IntField,StringField,FloatField ....?

您可以編寫一個以模板為參數(也稱為模板模板參數)的模板。 模板必須專門寫成將模板作為參數來允許它,但是沒有指定std::array來執行此操作。

您可以使用別名模板與C ++ 11緊密聯系:

template <typename T>
struct Field {}; 

template <typename T>
using FieldArray5 = std::array<Field<T>,5>;

int main() {

  FieldArray5<int> a0;

}

但是請記住, std::array需要模板參數來指定大小。

如果要讓std::array保留不同的類型,則只能通過多態來完成。 您也可以使用boost::any將多態隱藏起來但仍然實現的方法。

暫無
暫無

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

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