繁体   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