В Delphi XE2 я пытаюсь перегрузить оператор in
для записи, чтобы проверить, является ли значение, представленное записью, частью набора. Мой код выглядит так:
type
MyEnum = (value1, value2, value3);
MySet = set of MyEnum;
MyRecord = record
Value: MyEnum;
class operator In(const A: MyRecord; B: MySet): Boolean;
end;
class operator MyRecord.In(const A: MyRecord; B: MySet): Boolean;
begin
Result := A.Value in B;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
R: MyRecord;
S: MySet;
begin
R.Value := value1;
S := [value1, value2];
Button1.Caption := BoolToStr(R in S);
end;
Код не компилируется. Для оператора R in S
компилятор говорит: Несовместимые типы MyRecord
и MyEnum
.
Как я могу перегрузить оператор In
для MyRecord
, чтобы R in S
оценивалось как True
в приведенном выше коде?
function InSet(S: MySet): Boolean
к записи и использовать его вместо оператораin
. - person Jan Goyvaerts   schedule 01.12.2011BoolToStr(R._in(S));
- person Arioch 'The   schedule 22.03.2016