Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Friend vs Getter/Setter

Ostatnio zmodyfikowano 2015-06-03 10:27
Autor Wiadomość
darthachill
Temat założony przez niniejszego użytkownika
Friend vs Getter/Setter
» 2015-06-03 08:37:09
**Opis**
Gra Makao.
Klasa GameMaster zajmuje się rozdawaniem. Ale aby móc rozdać graczom karty, musi mieć dostęp do ich prywatnych zmiennych cards.

**Rozwiazania:**
1) użyć setterów w klasie Player dla cards. Ale wtedy zewsząd będzie można zmienić taką kartę, cierpi na tym hermetyczność.
2) przyjaźń Klasy Player z Klasa GameMaster. Pod względem enkapsulacji wygląda to lepiej, ale teraz mam problem ponieważ, nawet jak dam wstępną deklarację klasy Player w Klasie GameMaster to i tak nie wystarczy aby dostać się do składników
include\GameMaster.h | 33 | error: invalid use of incomplete type 'class Player' |
Co w takim przypadku zrobić? Czytałem aby wrzucić wszystko do jednego pliku.
Jak mądrze radzicie sobie w takich sytuacjach?

C/C++
#include <Card.h>
#include <Player.h>
#include <stdlib.h>

class Player; // wczesniej musimy dac znac o takiej klasie
using namespace std;
class GameMaster
{
    static const int amount = 52; // ilosc kart
    Card * deck; // talia
public:
    GameMaster()
        : deck( Card::deck() )
    { };
   
    void DealsTheCards( Player * p1, Player * p2, int poIle ) // rozdaj karty
    {
        for( int i = 0; i < poIle * 2; i++ )
        {
            p1->cards[ i++ ] = deck[ i ];
            p2->cards[ i ] = deck[ i ];
        }
    }
};


C/C++
#include "Card.h"
#include "GameMaster.h"
class Player
{
    Card * cards; // karty
    string imie;
    int amount; // ilosc kart
public:
    Player() { };
    friend class GameMaster;
};

PS: założenie, nie mogę używać tutaj C++11
P-133122
pekfos
» 2015-06-03 10:27:53
Masz cykliczne dołączenie się plików. Player nie musi znać klasy, z którą się przyjaźni.
P-133124
« 1 »
  Strona 1 z 1