//+------------------------------------------------------------------+ //| ClassInheritanceTester.mq5 | //| Dream Company | //| zucarato@gmail.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ //-------------------------------------------------------------------- // CLASS DEFINITIONS //-------------------------------------------------------------------- //-------------------------------------------------------------------- //-------------------------------------------------------------------- class CKid { protected: string name; int age; CKid *sibling; public: // Constructor CKid() { name=""; age=0; sibling=NULL; } string GetName() {return name;} void SetName(string nameinput) { name=nameinput; } int GetAge() { return age; } void SetAge(int ageinput) {age=ageinput;} void ChangeSiblingName(CKid& kid, string nameinput); void ChangeOtherSiblingName(string nameinput) { sibling.SetName(nameinput); } void SetSibling(CKid &siblinginput) { sibling = &siblinginput; } }; //-------------------------------------------------------------------- //-------------------------------------------------------------------- class CParent { protected: string name; int age; CKid son1; CKid son2; public: // Constructor CParent(); string GetName() {return name;} void SetName(string nameinput) { name=nameinput; } int GetAge() { return age; } void SetAge(int ageinput) {age=ageinput;} string GetSon1Name() { return son1.GetName(); } string GetSon2Name() { return son2.GetName(); } int GetSon1Age() { return son1.GetAge(); } int GetSon2Age() { return son2.GetAge(); } void SetSon1Name(string nameinput) { son1.SetName(nameinput); } void SetSon2Name(string nameinput) { son2.SetName(nameinput); } void SetSon1Age(int ageinput) { son1.SetAge(ageinput); } void SetSon2Age(int ageinput) { son2.SetAge(ageinput); } void SetKidName(CKid& changer, CKid& changed, string nameinput); void Son1ChangesSiblingName(string nameinput) { son1.ChangeOtherSiblingName(nameinput); } void Son2ChangesSiblingName(string nameinput) { son2.ChangeOtherSiblingName(nameinput); } }; //-------------------------------------------------------------------- // GLOBAL SCOPE OBJECTS //-------------------------------------------------------------------- CParent parent; //-------------------------------------------------------------------- // METHODS IMPLEMENTATIONS //-------------------------------------------------------------------- void CKid::ChangeSiblingName(CKid& kid, string nameinput) { int i; } //-------------------------------------------------------------------- //-------------------------------------------------------------------- CParent::CParent(void) { name = ""; age = 0; son1.SetAge(7); son1.SetName("Davi"); son2.SetAge(3); son2.SetName("Lucas"); son1.SetSibling(son2); son2.SetSibling(son1); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- void CParent::SetKidName(CKid& changer,CKid& changed,string nameinput) { //changer.ChangeSiblingName(changed, nameinput); } //-------------------------------------------------------------------- // EVENT HANDLERS //-------------------------------------------------------------------- //-------------------------------------------------------------------- //-------------------------------------------------------------------- void OnStart() { //--- parent.SetName("Eduardo"); parent.SetAge(39); Print("This is the parental class testing script."); Print("Name of Parent: ", parent.GetName()); Print("Age of Parent: ", parent.GetAge()); Print("Name of son1: ", parent.GetSon1Name()); Print("Age of son1: ", parent.GetSon1Age()); Print("Name of son2: ", parent.GetSon2Name()); Print("Age of son2: ", parent.GetSon2Age()); Print("Son1 changes name of son2."); parent.Son1ChangesSiblingName("Johnny"); Print("Son2 current name: ", parent.GetSon2Name()); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+