2013-05-03 62 views
0

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

error C2512: 'Card' : no appropriate default constructor available

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

CardDeck::CardDeck() 
{ 

    *Deck = new Card[52]; 

} 

我很好奇,我是否可以使用我的 卡::创建阵列卡(CHAR一,焦炭B)构造函数,或者如果我必须先使用默认构造函数创建数组。

+0

'Card':没有合适的默认构造函数可用' - 这意味着你没有'Card :: Card()'形式的构造函数。 – Yuushi 2013-05-03 06:14:41

+1

哇,对于初学者,你绝对不应该包括Card.cpp – 2013-05-03 06:14:41

+0

*“错误C2512:'卡':没有适当的默认构造函数可用”* - 嗯......那个神秘的错误可能意味着什么? – 2013-05-03 06:15:08

回答

2

要创建的卡的阵列一样,Card必须有一个默认的构造函数

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

的原因是,默认的构造函数需要给初始值的数组。

由于juanchopanza说你应该使用矢量,但你仍然会有同样的问题。

正如本人所说#include "Card.cpp"也是错误的。

而且这一行看起来可疑

*Deck = new Card[52]; 

你为什么要提领Deck?几乎可以肯定这也是错误的。我会展示更多的代码。似乎你有很多错误。

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文件。