Top.Mail.Ru
Ответы

Ошибка Pascal ABC NET. Перегруженная операция должна быть статической функцией

Function Operator + (A,B: Массив): Массив;
begin
Var Res:= New Массив (A.Size + B.Size);
For I:Integer:=0 To A.Size-1 Do Res[I]:= A[I];
For I:Integer:=A.Size To Res.Size-1 Do Res[I]:= A[I-A.Size];
Result:=Res;
End;
Переопределял оператор + для объекта класса массив.
Выдает ошибку: Перегруженная операция должна быть статической функцией.
Подскажите, что не так.

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

Массив - это свой велосипед над Array? Так-то над массивами в Pascal ABC.NET уже перегружен оператор + и он работает именно так.

Если оператор находится вне описания класса его стоит описать так

function Operator + (A,B: Массив): Массив; extensionmethod;
begin
....
....
end.

Если внутри описания класса
static function Operator + (A,B: Массив): Массив;
begin
....
....
end;

Копируйте не циклами. Копируйте Array.CopyTo В т. ч. один из перегруж. методов может копировать в массив с указанной позиции.

Аватар пользователя
Просветленный
6лет

Лучше делать первым способом