Передача массива указателей в качестве параметра в C ++ - PullRequest
0 голосов
/ 12 марта 2012

Не удается найти правильный синтаксис для передачи массива указателей типа 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 ".

1 Ответ

3 голосов
/ 12 марта 2012

Вы не можете создать массив временно с { _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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...