Возникает ошибка, когда я для класса, в котором есть динамический массив, сделал переопределение оператора.
вот сам класс -
- Код: Выделить всё
- type pp=class
 N:integer;
 x:array of double;
 procedure add(a,b:pp);
 procedure clear(n1:integer);
 end;
 operator + (a,b:pp)r:pp;
 implementation
 operator + (a,b:pp)r:pp;
 begin
 r.add(a,b);
 end;
 procedure pp.add(a,b:pp);
 var i:integer;
 begin
 clear(a.N);
 for i:=0 to n-1 do
 x[i]:=a.x[i]+b.x[i];
 end;
 procedure pp.clear(n1:integer);
 begin
 n:=n1;
 setLength(x,n);
 end;
вот появление ошибки -
- Код: Выделить всё
- var a,b,r:pp;
 begin
 a:=pp.Create; a.clear(2);
 b:=pp.Create; b.clear(2);
 r:=pp.Create; r.clear(2);
 r:=a+b; // <---- вот тут возникает ошибка 216
Это я что-то неправильно делаю, или это баг?
если в классе нединамический массив, или вместо класса используется обьект, то все в порядке.
Использую Lazarus 0.9.22 beta




 ) Кстати, провел небольшое "исследование" на тему быстродействия оператора на базе вашего первого примера, простой прогонкой цикла
) Кстати, провел небольшое "исследование" на тему быстродействия оператора на базе вашего первого примера, простой прогонкой цикла

