无法使用get函数返回对象数组

时间:2017-01-22 18:00:44

标签: c++ pointers codeblocks

我正在为大学考试编写一个简单的二十一点游戏。游戏没有图形,它在控制台上打印每个人。 该项目有三个类:甲板,卡,特殊卡。我只想告诉你甲板课,因为它存在我的问题。 在甲板课上有一个参数牌组,它是一组卡片(对象阵列)“卡片*卡片[52]”这是定义。在函数buildDeck()中实现了这个Card数组(数组的每个位置都填充了不同的卡片。现在我想要一个返回这个套牌的函数,所以我可以在main中使用它。我发布了我的代码.h和Deck.cpp

DECK.H
#ifndef DECK_H
#define DECK_H
#include "Card.h"

class Deck
{
    public:
        Deck();
        void buildDeck();
        void mixDeck();
        Card * getDeck();

    private:
        const char * H = "hearts";
        const char * D = "diamonds";
        const char * C = "clubs";
        const char * S = "spades";
        Card * deck[52];
};

#endif // DECK_H

这里是.cpp

#include <iostream>
#include "Deck.h"
#include "Card.h"
#include "Special_Card.h"
using namespace std;

Deck::Deck(){}

void Deck::buildDeck(){
    //here we got a series of for statements which create the deck 
    //and assign every location of the array to a different card. I 
    //won't post this part to keep the code simple
}

Card * Deck::getDeck(){
    return deck;  //HERE I GOT THE ERROR
}

当我尝试在第57行(我发表评论的行“// HERE I GOT THE ERROR”)构建应用程序时,我收到了这个错误:

error: cannot convert 'Card**' to 'Card*' in return

你对如何解决这个问题有任何想法吗?

2 个答案:

答案 0 :(得分:2)

你将deck声明为类卡的指针数组,而你想返回一个指向类卡的指针,这样你就可以从数组卡片中返回一个元素:

Card * Deck::getDeck(){
           return deck[0];  // or any other element
 }

或者如果要返回整个指针数组,可以将函数声明为:

Card** Deck::getDeck(){
    return deck;  //
}

答案 1 :(得分:0)

回答你的问题:如果你将成员变量deck声明为Card * deck[52],那么这表示一个52个指向卡对象的数组,而签名Card* getDeck()表示单个指针到卡对象,而不是指向指针数组的指针。

因此,要摆脱错误,你必须写

Card ** getDeck();