0

52 個の「カード」クラス オブジェクトの配列を使用する「カード デッキ」クラスを作成して、カードのデッキを作成しようとしています。配列は動的に割り当てる必要がありますが、これを作成するための構文がわかりません。私のコードはこのエラーを出します:

エラー C2512: 'Card': 適切な既定のコンストラクターがありません

#include "CardDeck.h" 
#include "Card.h"
#include <iostream>      
#include <cstdlib>       
using namespace std;

CardDeck::CardDeck()
{

    *Deck = new Card[52];

} 

Card::Card(char a , char b) コンストラクターを使用して配列を作成できるかどうか、または最初にデフォルトのコンストラクターを使用して配列を作成する必要があるかどうかに興味があります。

4

2 に答える 2

2

そのようなカードの配列を作成するにCardは、デフォルトのコンストラクターが必要です

class Card
{
public:
    Card(); // default cosntructor
    ...
};

その理由は、配列に初期値を与えるためにデフォルトのコンストラクターが必要だからです。

juanchopanza が言うように、代わりにベクターを使用する必要がありますが、それでも同じ問題が発生します。

ベンが言うように、それ#include "Card.cpp"も間違っています。

また、この行は疑わしいようです

*Deck = new Card[52];

なぜあなたは逆参照していDeckますか?それもほぼ間違いなく間違っています。もう少しコードを示します。かなりの数のエラーがあるようです。

于 2013-05-03T06:14:22.810 に答える
2

動的に割り当てる必要があることは明らかではありませんが、std::vector<card>代わりにを使用して問題を単純化できます。

// CardDeck.h
#include <vector>

class CardDeck
{
 public:
  CardDeck() : deck_(52) {} // initialie deck_ to hold 52 cards
 private:
  std::vector<Card> deck_;
};

インクルード ガードを追加し、ファイルをインクルードしないことを忘れないでください.cpp

于 2013-05-03T06:14:42.983 に答える