# Include <iostream >#include <string> using namespace STD; Class absperson; Class absmed {public: absmed () {} virtual ~ Absmed () {} virtual void send (string, absperson *) = 0; virtual void set (absperson *, absperson *) = 0 ;}; class absperson {public: absperson () {} virtual ~ Absperson () {} virtual void send (string) = 0; virtual void get (string) = 0; protected: absmed * p_med;}; Class person_buy: Public absperson {public: person_buy (absmed * P) {p_med = P;} virtual ~ Person_buy () {} void send (string Str) {p_med-> send (STR, this);} void get (string Str) {cout <"buyer information: "<STR <Endl ;}}; class person_detail: Public absperson {public: person_detail (absmed * P) {p_med = P;} virtual ~ Person_detail () {} void send (string Str) {p_med-> send (STR, this);} void get (string Str) {cout <"seller information: "<STR <Endl ;}}; class med: Public absmed {protected: absperson * person1; absperson * person2; public: MED () {} virtual ~ Med () {} void send (string STR, absperson * P) {If (P = person1) person2-> get (STR ); else person1-> get (STR);} void set (absperson * P1, absperson * P2) {person1 = p1; person2 = P2 ;}; int main () {absmed * p_med = new med; absperson * p_buy = new person_buy (p_med); absperson * p_limit = new person_med (p_med); p_med-> set (p_buy, p_limit ); p_buy-> send ("I want to buy a computer"); p_prop-> send ("brother sold not a computer, is lonely"); p_buy-> send ("okay, you won "); Delete p_med; Delete p_buy; Delete p_buckets; System (" pause "); Return 0 ;}