取临时地址

Taking address of temporary?

本文关键字:地址      更新时间:2023-10-16

我尝试使用Push Mode和QT的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());
 }

语句

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

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

似乎这个语句通常是无效的,因为你试图推送临时对象的地址,这些对象将在语句执行结束时被删除。