Ad esempio, ho un clan e un personaggio. C'è un personaggio che è il capo. Per dare al clan una caratteristica specifica, è richiesto un po 'di denaro dal personaggio.
Non voglio avere un accoppiamento troppo stretto. Al momento ho un membro nella classe clan
come questo:
bool clan::give_rank(character* chr, int rank)
{
if (!is_leader(chr.id()) || !chr->has_money(500))
return false;
this->rank_ = rank;
chr->take_money(500);
return true;
}
Questo accoppiamento stretto? o forse dovrei avere una classe secondaria come un clan_mgr che connette entrambe le classi?
bool clan_mngr::give_rank(character* chr, int rank)
{
clan* myclan = chr->get_clan();
if (!myclan || !myclan->is_leader(chr.id()) || !chr->has_money(500))
return false;
myclan->rank_ = rank;
chr->take_money(500);
return true;
}
// O forse questo, che sembra ancora peggio imo:
bool character::give_rank_to_clan(int rank)
{
clan* myclan = chr->get_clan();
if (!myclan || !myclan->is_leader(id()) || !has_money(500))
return false;
myclan->rank_ = rank;
TakeMoney(500);
return true;
}