Не получается. {$mode objfpc}
Опять получаем: Error: Operator is not overloaded: "TConturPoint" = "TConturPoint"
http://www.freepascal.org/docs-html/ref/refse88.html#x187-19700015.5 Не помогло
Сделал {$mode delphi}. Работает.
Модератор: Модераторы
alexs писал(а):А создать наследника от TList нельзя было?
{$mode delphi}{$H+}
.......
type
TBodyArray = TFPGList<TBodyBetweenCross>;
....
vada писал(а):Использование генериков создает еще проблему.
Нажимаю Ctrl+Space и получаю вместо ожидаемого продолжения метода класса [...]
На борту:
Windows XP
Lazarus 0.9.30.4
FPC 2.6.0
Vapaamies писал(а):По мотивам своего поста написал статью, которая стала видна с открытием нового сайта.
Vapaamies писал(а):Соглашение по структуре потомков небезопасно, ибо совершенно не контролируется компилятором.
stanilar писал(а):написал код
type
TListItem = class;
TListItemClass = class of TListItem;
TListItem = class
private
// { placeholder } FOwner: TContainer;
// { placeholder } FPrior, FNext: TListItem;
public
function Append(Item: TListItemClass): TListItem; virtual; abstract;
end;
TList = class
private
// { placeholder } FFirst, FLast: TListItem;
FCount: Cardinal;
public
function Append(Item: TListItemClass) : TListItem; virtual; abstract;
// properties
property Count: Cardinal read FCount;
end;
implementation
type
TListCast = class;
TListItemCast = class(TListItem)
FOwner: TListCast;
FPrior, FNext: TListItemCast;
public
function Append(Item: TListItemClass) : TListItem; override;
end;
TListCast = class(TList)
FFirst, FLast: TListItemCast;
public
function Append(Item: TListItemClass) : TListItem; override;
end;
function TListItemCast.Append(Item: TListItemClass) : TListItem;
var Tmp : TListItemCast;
begin
if Item = nil then Exit;
Result := TListItemClass.Create;
Tmp := TListItemCast(Result);
Tmp.FOwner := FOwner;
Tmp.FPrior := Self;
Tmp.FNext := FNext;
FNext := Tmp;
if FOwner <> nil then
with FOwner do
begin
Inc(FCount);
if FLast = Self then
FLast := Tmp;
end;
end;
function TListCast.Append(Item: TListItemClass) : TListItem;
begin
if Self.FLast <> nil then // приведение
Result := Self.FLast.Append(Item)
else
//Grab(Item);
end;
stanilar писал(а):Прошу прощения за не совсем рабочий код, писал пока мысль не пропала
Vapaamies писал(а):Что-то идеи кода я не понял.
Vapaamies писал(а):Скорее всего, таковым станет Pet
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5