アレイへの参照を引数として含むコンストラクターを宣言する次のような例を考えてみます。
fir.h
class FIR
{
private:
int32 (&coeffs)[NUM_COEFFS];
int32 tapDelayLine[NUM_COEFFS];
uint32 numSamples;
public:
FIR(int32(&coefficients)[NUM_COEFFS], uint32 samples);
void filter(input_buffer<int32> & in, output_buffer<int32> & out);
static void registerKernelClass()
{
REGISTER_FUNCTION(FIR::filter);
REGISTER_PARAMETER(coeffs);
}
};
fir.cpp
#include "fir.h"
FIR::FIR(int32(&coefficients)[NUM_COEFFS], uint32 samples)
: coeffs(coefficients)
{
for (int i = 0; i < NUM_COEFFS; i++)
tapDelayLine[i] = 0;
numSamples = samples;
}
void FIR::filter(input_buffer<int32> & in, output_buffer<int32> & out)
{
...
}
メンバー変数 coeffs
は、int32
(&)[NUM_COEFFS]
型です。コンストラクター初期化子 coeffs(coefficients)
は、coeffs
をクラス オブジェクトに外部で割り当てられているアレイへの参照に初期化します。coeffs
メンバー変数がコンパイラにより割り当てられることを aiecompiler に通知するため、REGISTER_PARAMETER を使用して registerKernelClass()
メソッド内にアレイ参照メンバー変数を登録する必要があります。アレイへの参照を含むコンストラクターが登録されていない場合、aiecompiler
からエラーが返されます。