将指针数组作为参数传递给C ++

时间:2012-03-11 20:23:16

标签: c++ arrays pointers parameters

我找不到将float * []类型的指针数组作为参数传递给函数的正确语法。

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

没问题,但是

_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'标记之前预期的primary-expression”。

1 个答案:

答案 0 :(得分:3)

您无法使用{ _osc[0].get_samples_ptr(), _osc[1].get_samples_ptr() }创建临时数组。 AFAIK临时创建数组的唯一方法是:

typedef int array_type[3];

void f(int the_array[]) {}

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

但这仅适用于C ++ 11。我认为在C ++ 03中根本不可能。