cast.ob 351 B

123456789101112131415161718
  1. MODULE m;
  2. TYPE
  3. Base = RECORD END;
  4. Derived1 = RECORD(Base) field1: INTEGER END;
  5. Derived2 = RECORD(Derived1) field2: INTEGER END;
  6. VAR
  7. pb: POINTER TO Base;
  8. pd1: POINTER TO Derived1;
  9. pd2: POINTER TO Derived2;
  10. BEGIN
  11. NEW(pd2);
  12. pb := pd2;
  13. pd1 := pd2;
  14. pb(Derived1).field1 := 0;
  15. pb(Derived2).field2 := 1;
  16. pd1(Derived2).field2 := 2
  17. END m.