2016-12-20 6 views
0

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(); 
} 
... 

私はコンパイラがコピーコンストラクタも意味をなさないような構築物として意図されていない、提供されていないことを不平を言っていることを理解しています。 私の質問は次のとおりです:

  1. コピーがどこで行われるべきか分かりません!
  2. この問題を解決するにはどうすればよいですか?

注意:このソフトウェアはMicrosoft VC9(Visual Studio 2008)およびQt4.8でコンパイルされていました。

+2

'Q_OBJECT'はクラスをコピーできないようにしますか? – Praetorian

+1

...または基本クラス 'rFFT'はそうかもしれません。 –

答えて

1

要素は、配列の初期化時にコピーされると予想されます。

CrossSpectrum XS[numOfFFT] = { 
    { frameLen, SIGLIB_HANNING }, 
    { frameLen, SIGLIB_HANNING }}; 
+0

bipllさん、ありがとうございます! –

関連する問題