В 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
в приведенном выше коде?