2016-11-26 7 views
0
は私がメインで Quartz* qu = new Quartz();を呼び出すとライン Card(const Card&) = delete;

削除とコピーコンストラクタをオーバーロードして、

と親クラスカードのコピーコンストラクタを無効にするかではなく、削除しようとしています

C++でサブクラスのデフォルトコンストラクタを呼び出しますデフォルトのコンストラクタが削除されているというエラーが表示されますか?カードでデフォルトのコンストラクタを定義するのではなく、コピーコンストラクタのオーバーロードを定義しているとは思わなかったので、これは混乱しています。これについての説明や回避策は非常に高く評価されます。

class Card { 
public: 

    Card(const Card&) = delete; 

}; 

class Quartz : public Card { 
public: 
    Quartz() = default; 


}; 

int main() { 

    Quartz* qu = new Quartz(); 
} 

答えて

1

デフォルトのコンストラクタは、そのクラスに他のコンストラクタがない場合にのみ暗黙的に定義されます。あなたがコピーコンストラクタを定義したので、あなたは今も明示的にデフォルトのものを定義する必要があります。

関連する問題