Friend vs Getter/Setter
Ostatnio zmodyfikowano 2015-06-03 10:27
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? #include <Card.h> #include <Player.h> #include <stdlib.h>
class Player; using namespace std; class GameMaster { static const int amount = 52; Card * deck; public: GameMaster() : deck( Card::deck() ) { }; void DealsTheCards( Player * p1, Player * p2, int poIle ) { for( int i = 0; i < poIle * 2; i++ ) { p1->cards[ i++ ] = deck[ i ]; p2->cards[ i ] = deck[ i ]; } } }; #include "Card.h" #include "GameMaster.h" class Player { Card * cards; string imie; int amount; public: Player() { }; friend class GameMaster; }; PS: założenie, nie mogę używać tutaj C++11 |
|
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. |
|
« 1 » |