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 回答