#include "Task.h" #include class Stock; class BuyStrategy; class StockMarket; class Investor : public Task { public: Investor( double capital, StockMarket* = 0 ); ~Investor(); void setBuyStrategy( BuyStrategy * buy ); void doTask(); void print(); bool buy( Stock*, double price, long amount ); bool sell( Stock*, double price, long amount ); void reserve( double ); void release( double ); void reserve( Stock *, long ); void release( Stock *, long ); private: double capital_; double reservedCapital_; struct stockInfo { stockInfo() : buyPrice(0), amount(0), reserved(0) {} double buyPrice; long amount; long reserved; long available() const { return amount - reserved; } }; map portfolio_; StockMarket * market_; BuyStrategy * buyStrategy_; double buyPrice( Stock * ) const; long amount( Stock * ) const; long amountAvailable( Stock * ) const; };