我正在为大学考试编写一个简单的二十一点游戏。游戏没有图形,它在控制台上打印每个人。 该项目有三个类:甲板,卡,特殊卡。我只想告诉你甲板课,因为它存在我的问题。 在甲板课上有一个参数牌组,它是一组卡片(对象阵列)“卡片*卡片[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
你对如何解决这个问题有任何想法吗?
答案 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();