tw23962.pp 746 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. {$MODE ObjFpc}
  2. uses classes;
  3. type
  4. TVector3 = packed record
  5. X, Y, Z: Single;
  6. end;
  7. TClassA = class
  8. protected
  9. fVector: TVector3;
  10. public
  11. procedure SetVector(AVector: TVector3); virtual; abstract;
  12. end;
  13. { TClassB }
  14. TClassB = class(TClassA)
  15. public
  16. procedure SetVector(AVector: TVector3); override;
  17. end;
  18. { TClassB }
  19. procedure TClassB.SetVector(AVector: TVector3);
  20. begin
  21. writeln('TClassB: ',AVector.X,',',AVector.Y,',',AVector.Z);
  22. fVector:=AVector;
  23. end;
  24. var
  25. MyVector: TVector3;
  26. MyClassB: TClassB;
  27. begin
  28. MyVector.X:=0;
  29. MyVector.Y:=0;
  30. MyVector.Z:=3;
  31. MyClassB:=TClassB.Create;
  32. MyClassB.SetVector(MyVector);
  33. if (MyClassB.fvector.x<>0) or
  34. (MyClassB.fvector.y<>0) or
  35. (MyClassB.fvector.z<>3) then
  36. halt(1);
  37. end.