2012-03-11 9 views
0

浮動小数点型[]のポインタ配列を関数に渡すための正しい構文が見つかりません。C++のパラメータとしてポインタ配列を渡す

real * pp[] = { _osc[0].get_samples_ptr(), _osc[1].get_samples_ptr() }; 
_mod.iterate_sample_loop(samples, p_syn_ctx, pp); 

はOKですが、

_mod.iterate_sample_loop(samples, p_syn_ctx, 
          { _osc[0].get_samples_ptr(), 
          _osc[1].get_samples_ptr() }); 

iterate_sample_loopがある場合:

void mod::iterate_sample_loop(u32 samples, 
           synth_context * p_syn_ctx, 
           real * p_inputs[]) ... 

結果、 "エラー:期待の一次式 'XXX' トークンの前に"。

答えて

3

{ _osc[0].get_samples_ptr(), _osc[1].get_samples_ptr() }で一時的にアレイを作成することはできません。

typedef int array_type[3]; 

void f(int the_array[]) {} 

int main() { 
    f(array_type{1,3,4}); 
} 

C++ 11でこれだけ作品、しかし:一時配列を作成するための私の知る限り唯一の方法は、このようなものです。私はそれがC++ 03ではまったく不可能だと思います。

+0

私は答えがC++ 11の統一初期化を使用していると思いますが、C++ 98ではこれを達成できません。入力した文字列に対応する文字列を返します。 – Suma

+0

'typedef real * inputs []; ... ' _mod.iterate_sample_loop(samples、p_syn_ctx、inputs {_osc [0] .get_samples_ptr()、_osc [1] .get_samples_ptr()}); ' は、同じエラー。 –

+0

@Suma、はい、それは本当です。 @AykutK。 –

関連する問題