2012-03-11 10 views
0

float * [] 유형의 포인터 배열을 함수의 매개 변수로 전달하기위한 올바른 구문을 찾을 수 없습니다.포인터 배열을 C++에서 매개 변수로 전달

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'토큰 앞에".

답변

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

'타입 정의 실제 입력 * []'는 ... '_mod.iterate_sample_loop (샘플 p_syn_ctx, 입력 _OSC {[0] .get_samples_ptr() _OSC [1] .get_samples_ptr()})' 가 있습니다 같은 오류. –

+0

@Suma, 맞습니다. –

관련 문제