【问题标题】:Class object array used within a class类中使用的类对象数组
【发布时间】:2013-05-03 06:12:24
【问题描述】:

我正在尝试通过创建一个“卡片组”类来创建一副卡片,该类使用 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) 构造函数,或者如果我必须首先使用默认构造函数创建数组。

【问题讨论】:

  • 'Card' : no appropriate default constructor available - 这意味着您没有Card::Card() 形式的构造函数。
  • 哇,对于初学者来说,你绝对不应该包含 Card.cpp
  • "error C2512: 'Card' : 没有合适的默认构造函数可用" - 嗯......这个神秘的错误可能意味着什么?
  • 您的 Card 类似乎没有构造函数 Card()。还请包括类卡的声明。
  • 哎呀。我应该提到我要使用的卡类使用两个 char 参数。我只是不确定如何写这个的语法。

标签: c++ class


【解决方案1】:

要创建像Card 这样的卡片数组,必须有一个默认构造函数

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

原因是需要一个默认构造函数来为你的数组提供初始值。

正如 juanchopanza 所说,您应该改用矢量,但您仍然会遇到同样的问题。

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

这条线看起来也很可疑

*Deck = new Card[52];

为什么要取消引用 Deck?几乎可以肯定这也是错误的。我会展示更多的代码。看来你有不少错误。

【讨论】:

    【解决方案2】:

    不清楚它必须动态分配,但您可以改用std::vector&lt;card&gt; 来简化问题:

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

    不要忘记添加include guards 并且不要包含.cpp 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2012-06-30
      相关资源
      最近更新 更多