Не получается. {$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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1