2017-01-28 41 views
0

上で削除関数を参照しようとすると、私はエラーこれは私の構造体である構造体のコンストラクタ

エラーC2280取得しています:「LandCell :: LandCell(無効)」:削除機能
ノートを参照しようとします:コンパイラはここで「LandCell :: LandCell」を生成した

struct LandCell 
{ 
    AnimatedBitmap sprite; 
    bool isColliding; 
}; 

私はそれが構造体の閉じ括弧に私を指す音符をクリックしてください

これは、独自の移動/コピーコンストラクタを定義した場合に発生する可能性がありますが、この場合は何も定義していないため、デフォルトのコンストラクタが削除されたようです。

編集:私は私のコードでは、このが構造と同じように、グローバルだで、landcellオブジェクトを作成するときに、このエラーはので、私はこれはAnimatedBitmapクラスのトップである

struct LandCell { 
... 
}; 

LandCell land1; 

持って起こる

class AnimatedBitmap 
{ 
public: 

AnimatedBitmap(int RMKey); 
AnimatedBitmap(BitmapFile*); 
~AnimatedBitmap(); 

ところで、このエラーは、AnimatedBitmapのオーバーロードされたassinment演算子とコピーコンストラクタを削除したときに起き始めました。

+6

[最小限で完全であり、検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。構造体の使い方と 'AnimatedBitmap'の内容を含みます。私の推測では、 'AnimatedBitmap'にはデフォルトのコンストラクタがありません。 –

+0

_ "ところで、このエラーは、AnimatedBitmapが削除されたAssinment演算子とコピーコンストラクタを削除したときに起き始めました。" –

答えて

1

私の推測では、AnimatedBitmapにはデフォルトコンストラクタがありません。
- 一部のプログラマーは7分前に

これが問題でした。

0

は、AnimatedBitmap(デフォルトコンストラクタはありません)を構築する方法を知る方法がないため、使用できないコンパイラ定義のデフォルトコンストラクタのみを残しました。

自分でLandCellのコンストラクタを作成して、しばらくそれを考えた後でどちらを選択してもspriteを初期化するように書き込む必要があります。