현재 구성원 함수 콜백 함수를 라이브러리 portaudio에 정의 된 비 멤버 함수에 전달하는 데 문제가 있습니다.비 멤버 함수 포인터가 필요할 때 멤버 함수 포인터 전달?
이 내 클래스를 정의하는 방법입니다 start_record()
내
class record {
public:
record();
void start_record();
int recordCallback(const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags, void *userData);
private:
PaStreamParameters inputParameters,
outputParameters;
PaStream* stream;
PaError err = paNoError;
paTestData data;
int totalFrames;
int numSamples;
int numBytes;
SAMPLE max, val;
double average;
};
내가 아닌 멤버 함수에 멤버 함수를 통과 .. 내가 클래스 레코드 (콜백)의 멤버 함수를 통과 의미, 비 멤버 함수 Pa_OpenStream()에 전달합니다.
err = Pa_OpenStream(
&this->stream,
&this->inputParameters,
NULL, /* &outputParameters, */
SAMPLE_RATE,
FRAMES_PER_BUFFER,
paClipOff, /* we won't output out of range samples so don't bother clipping them */
this->recordCallback,
&data);
if(err != paNoError)
{
std::cout << "Something wrong - open_stream check" << std::endl;
exit(1);
}
portaudio
int (*)(const void*, void*, long unsigned int, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*)
and not
하지
int (record::)(const void*, void*, long unsigned int, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*)
빠른 용액 클래스 범위 외부 함수를 정의하고, 변수를 확인하는 것이다 그것을 사용하고 클래스 전역 내에서 정의하지만, 나는 그것을 피하고 싶습니다. 그럼 어떻게 처리할까요?
이 파라미터 유효하다 * * 통과하지 '파싱'. – EJP