Возникает ошибка, когда я для класса, в котором есть динамический массив, сделал переопределение оператора.
вот сам класс -
- Код: Выделить всё
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