Когда обьекту с перегрузкой операторов сделал метод виртуальным, то при его вызове возникает Access Violation.
Вот обьект -
- Код: Выделить всё
- type tmyobject=object
 i:integer;
 constructor init;
 function get_string:string; virtual;
 end;
 operator +(c1,c2:tmyobject)r:tmyobject;
 implementation
 constructor tmyobject.init;
 begin
 i:=0;
 end;
 function tmyobject.get_string:string;
 begin
 result:=inttostr(i);
 end;
 operator +(c1,c2:tmyobject)r:tmyobject;
 begin
 r.i:=c1.i+c2.i;
 end;
А вот здесь при вызове метода возникает ошибка -
- Код: Выделить всё
- procedure TForm1.Button1Click(Sender: TObject);
 var x:tmyobject;
 begin
 x.init;
 x:=x+x;
 form1.Caption:=x.get_string;
 end;
Что я делаю не так?



