【发布时间】:2012-10-07 23:59:03
【问题描述】:
我有从 Base 结构派生的 int 模板化的结构。
struct Base { int i; double d; };
template< int N > struct Derv : base { static const int mN = N; };
我需要创建一个 Derv 数组,其中 N 可以针对该数组中的每个结构而变化。我知道 C/C++ 不允许使用不同类型的对象数组,但有没有办法解决这个问题?我正在考虑以某种方式分离类型信息(诸如指向 Base struct 的指针或 union 的使用之类的提示在我脑海中浮现,但是所有这些我不知道如何存储每个数组元素的类型信息以供在编译期间使用)。可以看到,每个 Derv
我需要稍后在我的代码中访问每个数组元素的类型以进行模板特化。这一切的总体目标是拥有一个编译时调度机制,而无需在代码中的某处进行运行时“类型切换”。
【问题讨论】:
-
目前我看不出让
Derv成为模板类有什么用处。一个都没有。所以首先你应该想知道你问的问题是否正确。 -
制作
Base的向量,完成。 -
重点是静态调度的参数(我不想包含整个代码,但通常有模板化的函数根据 Derv 的类型表现不同)。所有这些都发生在对性能至关重要的代码中,所以我宁愿避免使用虚函数、函数指针和类似的东西。
-
@Kerrek SB:是的,但是如何保留每个元素的类型信息?
-
@JakubMertlik:通过
size()成员函数。