#include class Dice { public: void setSides(int sides); int getSides(); int roll(); private: int sides; }; void Dice::setSides(int sides) { this->sides = sides; } int Dice::getSides() { return sides; } int Dice::roll() { return (rand() % sides) + 1; } //--------------------------------------------------------------- class DicePotContainer { public: Dice *getDice(); DicePotContainer *getNext(); void setDice(Dice &d); void setNext(DicePotContainer &dpc); private: DicePotContainer *pNext; Dice *pDice; }; Dice *DicePotContainer::getDice() { return pDice; } DicePotContainer *DicePotContainer::getNext() { return pNext; } void DicePotContainer::setDice(Dice &d) { pDice = &d; } void DicePotContainer::setNext( DicePotContainer &dpc) { pNext = &dpc; } //--------------------------------------------------------------- class DicePot { public: DicePot(); void add(Dice &d); int roll(); private: DicePotContainer *pStart; int dCount; }; DicePot::DicePot() { dCount = 0; } void DicePot::add(Dice &d) { DicePotContainer *dpc = new DicePotContainer(); dpc->setDice(d); if (dCount == 0) { pStart = dpc; } else { DicePotContainer *cur; cur = pStart; for(int i = 0; i < (dCount-1); i++) { cur = cur->getNext(); } cur->setNext(*dpc); } dCount++; } int DicePot::roll() { int total = 0; DicePotContainer *cur; cur = pStart; for (int i = 0; i < dCount; i++) { total += cur->getDice()->roll(); cur = cur->getNext(); } return total; } //--------------------------------------------------------------- int main(void) { Dice moo; srand(time(0)); moo.setSides(6); DicePot pot; pot.add(moo); pot.add(moo); for (int i = 0; i < 20; i++) std::cout << pot.roll() << std::endl; }