index.cpp

来自「Vc.Net入门与提高源码」· C++ 代码 · 共 76 行

CPP
76
字号
#using <mscorlib.dll>
using namespace System;
__gc class PhoneNumber {
public:
PhoneNumber(int AreaCode, int ThreeDigits, int FourDigits) 
{
   _AreaCode = AreaCode; 
   _ThreeDigits = ThreeDigits; 
   _FourDigits = FourDigits;
}
private:
   int _AreaCode;
   int _ThreeDigits;
   int _FourDigits;
};
__gc class Employee {
public:
   Employee(String * s, PhoneNumber * p) {_name = s; _phonenumber = p;};
   __property String * get_name() {return _name;}
   __property PhoneNumber * get_number() {return _phonenumber;}
protected:
   String * _name;
   PhoneNumber * _phonenumber;
};
__gc class Manager {
public:
   // EmpList * getreports() const {return Reports;};
   __property Employee * get_Report(String * s) { 
      for(pEmp = Reports; pEmp && (pEmp -> emp -> name != s); 
          pEmp = pEmp -> next);
      if (pEmp) return pEmp -> emp; else return 0;
   }
   __property Employee * get_Report(PhoneNumber * p) {
      for(pEmp = Reports; pEmp && (pEmp -> emp -> number != p); 
          pEmp = pEmp -> next);
      if (pEmp) return pEmp -> emp; else return 0;
   }
   __property void set_Report(String* s, Employee* e) { 
      for(pEmp = Reports; pEmp && (pEmp -> emp -> name != s); 
          pEmp = pEmp -> next);
      if (!pEmp) {
         EmpList * emp1 = new EmpList; 
         emp1 -> emp = e; 
         emp1 -> next = Reports; 
         Reports = emp1;
      }
   }
   /*   Employee* Report[ String* ]; */       //假的数组成员
   __property void set_Report(PhoneNumber * p, Employee* e) { 
      for(pEmp = Reports; pEmp && (pEmp -> emp -> number != p); 
          pEmp = pEmp -> next);
      if (!pEmp)  {
         EmpList * emp1 = new EmpList; 
         emp1 -> emp = e; 
         emp1 -> next = Reports; 
         Reports = emp1;
      }
   };
private:
   __gc struct EmpList {
      Employee * emp;
      EmpList * next;
   };
   EmpList * pEmp;
   static EmpList * Reports = 0;
};
int main() {  
   Manager*  Ed = new Manager;
   PhoneNumber * p1 = new PhoneNumber(425, 555, 1111);
   PhoneNumber * p2 = new PhoneNumber(206, 555, 1111);
   Employee* Bob = new Employee(S"Bob Smith", p1); 
   Employee* Gus = new Employee(S"Gus Jones", p2);
   Ed->Report[ Bob->name ] = Bob;   // 按照 String*索引
   Ed->Report[ Gus->number ] = Gus;   //根据PhoneNumber*索引Console::WriteLine(Ed->Report[ Bob->number ] -> name);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?