我尝试使用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());
}
最佳答案
这个声明
m_DataBufer->Push(&m_audioIODevice->read(nBytesReady));
错了。函数 m_audioIODevice->read(nBytesReady)
返回一个临时对象,正如编译器所说,您可能无法获得右值临时对象的地址。使用一些中间变量来保存函数调用的结果。
此外,该语句似乎通常是无效的,因为您正试图推送将在语句执行结束时删除的临时对象的地址。
关于c++ - 临时住址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560339/