我尝试使用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());
}
答案 0 :(得分:2)
本声明
m_DataBufer->Push(&m_audioIODevice->read(nBytesReady));
错了。函数m_audioIODevice->read(nBytesReady)
返回一个临时对象,正如编译器所说,您可能无法获得rvalue临时对象的地址。使用一些中间变量来保持函数调用的结果。
此外,这个语句似乎也是无效的,因为您试图推送将在语句执行结束时删除的临时对象的地址。