窓C++エラー:minGW_32、Qtの5.7.0と「削除された機能の使用」、私は次のコードのコンパイルしようとすると、エラーメッセージ、次の取得10
main_LoSignalDelayOnCoherence.cpp:56: error: use of deleted function 'CrossSpectrum::CrossSpectrum(const CrossSpectrum&)'
CrossSpectrum(frameLen, SIGLIB_HANNING) };
main_LoSignalDelayOnCoherence
でエラーが発生、対応するラインである:CrossSpectrum
の
CrossSpectrum XS[numOfFFT] = {
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING),
CrossSpectrum(frameLen, SIGLIB_HANNING) };
ヘッダファイルは次のとおり
class CrossSpectrum : public rFFT
{
Q_OBJECT
public:
CrossSpectrum(
SLArrayIndex_t FFTLength = 1024, // Power of 2
const SLWindow_t windowType = SIGLIB_RECTANGLE,
QObject *parent = NULL);
~CrossSpectrum();
// notice, no assignment and copy constructor defined
...
}
対応する実装ファイルには、次のとおりです。
CrossSpectrum::CrossSpectrum (
SLArrayIndex_t FFTLength,
const enum SLWindow_t windowType,
QObject *parent)
: rFFT(FFTLength, windowType, true, parent)
{
mpTemp = SUF_VectorArrayAllocate(mFFTLength);
mpTemp2 = SUF_VectorArrayAllocate(mFFTLength);
mpCplxTemp = SUF_ComplexRectArrayAllocate(mFFTLength);
mpCplxTemp2 = SUF_ComplexRectArrayAllocate(mFFTLength);
mpCplxTemp3 = SUF_ComplexRectArrayAllocate(mFFTLength);
mpAccumulatedAutoSpectrum1 = SUF_VectorArrayAllocate(mFFTLength);
mpAccumulatedAutoSpectrum2 = SUF_VectorArrayAllocate(mFFTLength);
mpAccumulatedCrossSpectrum = SUF_ComplexRectArrayAllocate(mFFTLength);
reset();
}
...
私はコンパイラがコピーコンストラクタも意味をなさないような構築物として意図されていない、提供されていないことを不平を言っていることを理解しています。 私の質問は次のとおりです:
- コピーがどこで行われるべきか分かりません!
- この問題を解決するにはどうすればよいですか?
注意:このソフトウェアはMicrosoft VC9(Visual Studio 2008)およびQt4.8でコンパイルされていました。
'Q_OBJECT'はクラスをコピーできないようにしますか? – Praetorian
...または基本クラス 'rFFT'はそうかもしれません。 –