Перегрузка операторов в Delphi
возможно ли (в Delphi) перегрузить операторы в классах. Некоторое время назад я читал, что это возможно только для записей, но я нашел информацию, которая для классов слишком похожа на код ниже:
type
TMyClass = class
class operator Implicit(a: Integer): TMyClass;
end;
class operator TMyClass.Implicit(a: Integer): TMyClass;
begin
// ...
end;
Это (изменен) адрес: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/operatoroverloads_xml.html
но когда я пытаюсь использовать его (внутри Delphi XE), я получить:
процедура, функция, свойство или ожидаемый VAR (E2123)
Я хочу создать свой собственный простой класс для матричного манипулирования, и возможность использования перегрузочных опеараторов внутри класса - очень ожидаемая возможность.
С уважением, Артик!--2-->
1 ответов
перегрузка операторов для классов доступна в некоторых версиях компилятора. Он доступен для компиляторов .net и iOS. Для Windows и Mac не поддерживается.
компилятор iOS может поддерживать это, поскольку он управляет временем жизни экземпляров класса с помощью ARC. Если настольные компиляторы когда-либо переключаются на ARC, вы можете ожидать поддержки перегрузки оператора.
Марко написал об этом в блоге: http://blog.marcocantu.com/blog/class_operators_delphi.html