以临时的地址?

时间:2014-07-03 17:55:13

标签: c++ qt push qtimer

我尝试使用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());
 }

1 个答案:

答案 0 :(得分:2)

本声明

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

错了。函数m_audioIODevice->read(nBytesReady)返回一个临时对象,正如编译器所说,您可能无法获得rvalue临时对象的地址。使用一些中间变量来保持函数调用的结果。

此外,这个语句似乎也是无效的,因为您试图推送将在语句执行结束时删除的临时对象的地址。