0

我正在尝试通过创建一个“卡片组”类来创建一副卡片,该类使用一组 52 个“卡片”类对象。该数组需要动态分配,但我无法弄清楚创建它的语法。我的代码给出了这个错误:

错误 C2512:“卡”:没有合适的默认构造函数可用

#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

目前尚不清楚它是否必须动态分配,但您可以使用 anstd::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 回答