연습으로 C++에서 Texas Hold'em 게임을 프로그래밍하려고합니다. 방금 친구 기능에 대해 읽었으며, 플레이어가 갑판에서 카드를 가져올 수 있도록하기 위해이 기능을 사용하는 것에 대해 생각했습니다.다른 클래스의 친구 클래스 기능?
다음과 같이 저는 현재 두 개의 클래스를 정의 : 나는 deck
클래스의 멤버에 대한 참조를 취하도록 player
클래스의 draw()
방법을 싶습니다 및 number
을 제거 할 수
#include <string>
#include <vector>
#include <stdio.h>
typedef unsigned int uint;
class deck
{
private:
std::vector<card> cards;
public:
void initialize(void)
{
char suits[] = { 'H', 'C', 'D', 'S' };
uint values[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
for (uint i = 0; i != 4; i++)
{
for (uint j = 0; j != 13; j++)
{
cards.push_back(card(suits[i], values[j]));
}
}
}
void shuffle(void)
{
uint i = cards.size(), random_index;
card shuffled_card;
while (i > 0)
{
random_index = rand() % (i + 1);
shuffled_card = cards[random_index];
cards[random_index] = cards[i];
cards[i] = shuffled_card;
i--;
}
}
};
class player
{
private:
std::string name;
uint chips;
std::vector<card> hand;
public:
player(std::string set_name, uint set_chips) { name = set_name; chips = set_chips; }
void draw(deck& target_deck, uint number)
{
// Draw cards from the top of the
// target deck.
}
};
카드는 cards
에서 deck
입니다. cards
은 deck
의 개인 요소이므로 draw()
에 target_deck.cards
으로 참조 할 수 없습니다. 나는 deck
클래스로 친구 기능을 추가하는 시도했습니다
friend void player::draw(deck&target_deck, uint number);
이, 그러나, 문제가 해결되지 않습니다. 코드에 문제가 있습니까? 아니면 player
외부의 친구 함수를 정의하는 유일한 해결책입니까? (b) player
클래스 전체를 deck
의 친구로 만드시겠습니까?
미리 알려 주셔서 감사합니다!
그렉에 의해 대답은 좋다, 난 당신이 여기 –
뭐죠'initialize' 기능을 대신 생성자 최대를 사용해야 어떤 친구 기능이 생각 해달라고? –
친구 멤버 함수가 작동해야합니다 : http://msdn.microsoft.com/en-us/library/ahhw8bzz.aspx –