0

QT の Push Mode と QTimerEvent を使用して timerEvent を実装しようとしています。私のコードは、「一時アドレスを取得しています」というエラーを返します。なにが問題ですか?どんな助けでも大歓迎です。ここにコードがあります

void Engine::timerEvent(QTimerEvent *)
{
m_audioIODevice->open(QIODevice::ReadOnly);

const qint64 nBytesReady = m_auidioInput->bytesReady();
m_DataBufer->Push(&m_audioIODevice->read(nBytesReady));

emit BuferChanged(m_DataBufer->GetByteArray());
 }
4

1 に答える 1

2

この文

m_DataBufer->Push(&m_audioIODevice->read(nBytesReady));

間違っている。関数m_audioIODevice->read(nBytesReady)は一時オブジェクトを返し、コンパイラが言うように、右辺値の一時オブジェクトのアドレスを取得できない場合があります。関数呼び出しの結果を保持する中間変数を使用します。

また、ステートメントの実行の最後に削除される一時オブジェクトのアドレスをプッシュしようとしているため、このステートメントは一般的に無効であるようです。

于 2014-07-03T17:59:44.910 に答える