C ++简单构造函数问题

时间:2013-01-29 19:39:35

标签: c++ constructor

我正在尝试创建一个玩家手中的课程(在前面的纸牌游戏中)。 draw方法将绘制另一张卡,showHand方法应显示手中的当前卡。我试图在构造函数中初始化指针数组,但是如何做到这一点(我相信我的问题源于此)。尝试现在注释掉这个 - > jon = {};给出了这个错误:“错误:分配''到'卡* [12]'”

的不兼容类型

***目前在showHand中,如果我只是尝试cout jon [i] - > getRank(),就会弹出一堆废话;但Draw方法效果很好。

class myHand{

public:

myHand(){
    this->size=0;
    //this->jon={};

}

void Draw(Card anyCard) {

    if(size>11) {
        cout<<"You can only have a maximum of 12 cards in your hand at a time"<<endl;
        return;
    }

    jon[size]=&anyCard;
    cout<<"HERE IS ANYCRD:"<<jon[size]->getRank()<<jon[size]->getSuit()<<endl;
    size++;
}

void showHand() {
   //DOESNT WORK HERE
}

void Place(Card* anyCard) {

}
private:
    int size;
    Card* jon[12];
};

3 个答案:

答案 0 :(得分:5)

你的问题是悬空指针。

你的更广泛的问题是使用指针。只是不要这样做。存储一组实际 Card对象。

答案 1 :(得分:1)

数组不可分配,即some_array = {}在初始化之后是非法的。

此时您的数组已初始化。但它确实包含垃圾,因此在使用之前需要初始化每个元素。

旁注......

jon[size]=&anyCard;

这很糟糕。您正在存储本地变量的地址。一旦函数退出,该指针就会变为无效。

答案 2 :(得分:0)

您正在存储本地变量的地址:

 jon[size]=&anyCard;

当它超出范围时(当剩下该功能时)会被销毁。如果要在jon中存储指针,则需要至少制作一份副本。