继续这个话题Variadic 模板异构容器,我想问以下问题。假设我们有几个类,其中两个成员是动态数组。现在假设有这些类的对象序列,它们被包装在异构容器中。在这个序列中,一个数组成员是“输出”向量,另一个数组成员是“输入”向量,它是指向来自前一个对象的适当输出数组的指针。这个序列被实现为可变参数模板类:
//Classes, objects which are members of the sequence
template<int NumberElements>
struct A
{
A() : output(new float[NumberElements]){}//allocate output
~A(){delete[] output;}
float *input;//input vector - pointer to output vector from preceding object of sequence
float *output;// output vector (size - NumberElements) of current member of sequence
};
template<int NumberElements>
struct B
{
B() : output(new float[NumberElements]){}//allocate output
~B(){delete[] output;}
float *input;
float *output;
};
template<int NumberElements>
struct C
{
C() : output(new float[NumberElements]){}//allocate output
~C(){delete[] output;}
float *input;
float *output;
};
//Container
template<typename...Arg>
struct HeterogenousContainer
{
HeterogenousContainer();//Do something to setup the sequence
std::tuple<Arg...> elements;
};
如何为输出向量正确分配内存(通过new/malloc),并设置指向前面输出向量的输入指针?例如,我写下一段代码:
HeterogenousContainer<A<5>, B<7>, C<9>> sequence;
我希望序列的第一个成员的输入为nullptr ,从第二个点的 输入到第一个的输出等。如何正确实现它?