我正在用C ++制作一个扑克概率程序。该程序将制作一个套牌,随机播放,交易五张牌并确定你拥有什么样的牌。这将运行16000次,并估计出现的平均手数。
我制作了三个班级,一个班级班,一个甲板班和一个班级班。卡类具有套装的字符和等级的int,甲板类具有52张卡的向量,其需要是私有的,并且手类具有5张牌的向量,其也需要是私人成员。现在,甲板类需要有一个dealHand()函数,它将甲板的前五张牌复制到手牌向量中,但是当手牌向量需要私有且无法从牌组中访问时,我怎么能这样做呢? ?
这是我的甲板课
class deck
{
public:
deck();
void shuffle();
hand dealHand();
void printDeck();
private:
vector<card> deckData;
void loadDeck();
};
这是我的手班
class hand
{
public:
hand();
void printHand();
private:
vector<card>handData;
void initHand();
};
这是我的dealHand函数的定义
hand deck::dealHand()
{
hand hand;
for(int j=0; j<5; j++)
{
hand.handData[j].suit = deckData[j].suit;
hand.handData[j].rank = deckData[j].rank;
}
return hand;
}
当我的成员是私有的时候,怎么能让这个函数返回一个hand类型的对象?谢谢。
答案 0 :(得分:1)
您需要为私人成员添加一个setter,例如:
class hand
{
public:
hand();
...
void addCard( suit s, rank r );
...
private:
vector<card>handData;
...
};
void hand::addCard( suit s, rank r )
{
// if you had a constructor for card using suit and rank as parameters
handData.push_back( card( s, r ) );
}
答案 1 :(得分:0)
你可以在Hand类中添加一个giveCard()方法,将它推回去,同时它可以让你检查手牌是否还没有五张牌......
答案 2 :(得分:-1)
声明&#34;手&#34;作为&#34; deck&#34;的朋友。类。
class hand {
friend class deck;
...
};
现在&#34; deck&#34;的对象class可以访问class&#34; hand&#34;的私有属性。对象。