我试图通过创建一个“卡片组”类来创建一副牌,该类使用52个“卡”类对象的数组。数组需要动态分配,但我无法弄清楚创建它的语法。我的代码给出了这个错误:
错误C2512:'卡':没有合适的默认构造函数
#include "CardDeck.h"
#include "Card.h"
#include <iostream>
#include <cstdlib>
using namespace std;
CardDeck::CardDeck()
{
*Deck = new Card[52];
}
我很好奇我是否能够使用my创建数组 Card :: Card(char a,char b)构造函数,或者如果我必须首先使用默认构造函数创建数组。
答案 0 :(得分:2)
创建像Card
那样的卡片阵列必须有默认构造函数
class Card
{
public:
Card(); // default cosntructor
...
};
原因是需要一个默认构造函数来为数组提供初始值。
正如juanchopanza所说,你应该使用矢量,但你仍然会遇到同样的问题。
正如Ben所说#include "Card.cpp"
也是错误的。
这条线看起来也很可疑
*Deck = new Card[52];
为什么要取消引用Deck
?几乎可以肯定这也是错误的。我会展示更多代码。好像你有很多错误。
答案 1 :(得分: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_;
};
不要忘记添加include guards,也不要包含.cpp
个文件。