繁体   English   中英

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

[英]Can't return an array of object with a get function

我正在为大学考试编写一个简单的二十一点游戏。 游戏没有图形,它会在控制台上打印每个人。 该项目分为三类:Deck、Card、Special Card。 我只想向您展示 Deck 课程,因为这正是我的问题所在。 在 Deck 类中,有一个参数卡片组,它是一组卡片(对象数组)“卡片 * 卡片组 [52]”,它是定义。 在函数 buildDeck() 中实现了这个 Card 数组(数组的每个位置都填充了不同的 Cards。现在我想要一个返回这个卡片组的函数,以便我可以在 main 中使用它。我发布了我的 Deck 代码.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

你知道如何解决这个问题吗?

您将deck 声明为指向类 Card 的指针数组,而您想返回一个指向类 card 的指针,以便您可以从 yhe 数组deck 中返回一个元素:

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

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

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

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

因此,要摆脱错误,您必须编写

Card ** getDeck();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM