小编ken*_*ken的帖子

为什么析构函数总是声明为虚拟

可能重复:
何时使用虚拟析构函数?
虚析构函数和未定义的行为

我是c ++和编程的新手,我观察到析构函数总是被声明为虚拟的.我可以知道为什么会这样吗?

提前致谢

c++ destructor

3
推荐指数
1
解决办法
6613
查看次数

c ++将const对象引用传递给函数

错误:将'const QByteArray'作为'this'参数传递给'QByteArray&QByteArray :: append(const QByteArray&)'丢弃限定符[-fpermissive]

因为作为函数参数传递时使对象成为常规,所以我已经完成了它.但现在我得到一个错误!!,我想让函数保持不变,因为我必须将qbyte数组中的数据转换为short,然后将其附加到另一个数组.

QByteArray ba((const char*)m_output.data(), sizeof(ushort));
    playbackBuffer.append(ba);
Run Code Online (Sandbox Code Playgroud)

我真的需要将这个数组传递给playbackbuffer;
它给了我一个错误playbackBuffer.append(ba);


提前帮助谢谢

c++ const reference

0
推荐指数
1
解决办法
8147
查看次数

将'const'作为'this'参数传递给

可能重复:
c ++将const对象引用传递给函数

void SpectrumAnalyserThread::calculateFFT(AnalogData &frame, const QByteArray       &playbackBuffer)   
{

   fft->window(frame.data(),frame.size());

    fft->fix_fftr(frame.data(), qFloor(log(frame.size()) / log(2)), 0);

     for(int i = 0; i < m_numSamples; ++i)
     {
        m_output.push_back(frame[i]);
     }
     fft->fix_fftr(m_output.data(), qFloor(log(m_output.size()) / log(2)), 0);

    const QByteArray ba((const char*)m_output.data(), sizeof(ushort));

    const_cast<QByteArray &>(playbackBuffer);

    playbackBuffer.append(ba);

    m_output.clear();

    calculateMagnitude(frame);

}  
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: passing 'const QByteArray' as 'this' argument of 'QByteArray& QByteArray::append(const QByteArray&)' discards qualifiers [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

如果我做了功能常量则在抛出错误 m_output.clear(),m_output.push_back(),这是显而易见的,但我需要清除缓冲区,这样当函数被再次调用以前的数据不会被追加.

c++ const this

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×3

const ×2

destructor ×1

reference ×1

this ×1