この話題Variadic template 異種コンテナの続きで、以下に質問したいと思います。動的配列である 2 つのメンバーを持つ複数のクラスがあるとします。ここで、これらのクラスのオブジェクトのシーケンスがあり、異種コンテナーにパックされているとします。このシーケンスでは、配列メンバーの 1 つは「出力」ベクトルであり、別の配列メンバーは「入力」ベクトルであり、前のオブジェクトからの適切な出力配列へのポインターです。このシーケンスは可変個引数テンプレート クラスとして実装されます。
//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、 2 番目からの入力- 最初からの出力へのポイント などにします。正しく実装するにはどうすればよいですか?