실시간 오디오 응용 프로그램을위한 이중 버퍼를 구현하려고하는데 QAudioInput
은 QIODevice
의 하위 클래스 여야합니다. 이 방법에 대한 설명서가 매우 혼란 스럽습니다.QIODevice :: writeData 구현, 혼동스러운 문서
우선 설명서의 메소드 서명이 QT 5.9.2의 헤더와 일치하지 않습니다.이 헤더는 virtual qint64 writeData(const char *data, qint64 len) = 0;
입니다.
나에게 모순 보이는이 말한다 :이 최대 기록 : 그것은 그냥 문서도 함께 의미 데이터의 일부를 버퍼 수 있음을 의미하기 때문에
qint64 QIODevice::writeData(const char *data, qint64 maxSize)
maxSize
매개 변수 나를 혼란 :문서는하지만이 서명이 데이터에서 장치로의
maxSize
바이트. 기입해진 바이트 수를 돌려줍니다. 에러가 발생했을 경우는-1
가 돌려 주어집니다. 그러나, 즉시 문서를 후서
이 기능을 반환하기 전에 가능한 모든 데이터를 기록하는 것이 중요이 기능을 재 구현합니다. 이는QDataStream
이 클래스에서 작동 할 수 있도록하기 위해 필요합니다.QDataStream
은 모든 정보가 기록되었다고 가정하므로 문제가 있으면 기록을 다시 시도하지 않습니다.
따라서 QIODevice
구현은 모든 데이터를 단일 호출로 버퍼링하는 것인가 여부를 결정합니다.
매개 변수의 이름을 변경해도 함수 서명에 영향을주지 않습니다. 아니면 당신을 방해하는 가상인가? – user463035818
니스 찾기! :] 현재 구현 [QDataStream] (http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/io/qdatastream.cpp),'writeData'를 사용하지 않는 것 같습니다. – bezet
그것은 나를 방해하는 매개 변수 이름의 의미입니다. 나에게 maxSize는 모든 데이터를 쓸 필요가 없음을 의미하지만 len은 함축 된 의미가 없다. 혼란스러운 문서와 결합하여 나는 명확한 설명을 얻고 싶습니다. –