Я пишу своего рода оболочку массива, использую запись в качестве контейнера и включаю в нее некоторые "классоподобные" функции.Я также хочу иметь возможность присвоить ему массив, как и в случае с обычным массивом, поэтому я реализовал оператор класса Implicit:
type
TArrayWrapper = record
class operator Implicit(AArray: array of TObject): TArrayWrapper; overload;
Items: TArray<TObject>;
procedure Add(AItem: TObject);
...
end;
Так что я могу делать такие вещи, как:
procedure DoSomething;
var
myArray: TArrayWrapper;
begin
myArray := [Obj1, Obj2, Obj3];
...
end;
Проблема возникает, когда я пытаюсь передать массив Integer методу, в качестве параметра которого указан TArrayWrapper:
procedure DoSomethingElse(AArrayWrapper: TArrayWrapper);
begin
...
end;
procedure DoSomething;
var
myArray: TArrayWrapper;
begin
myArray := [Obj1, Obj2, Obj3];
DoSomethingElse(myArray); <--- Works!!!!
DoSomethingElse([Obj1, Obj2, Obj3]); <--- Error E2001: Ordinal type required -> It is considering it like a set, not as an array
end;
Что может происходить?
Заранее спасибо.