小编Cha*_*haa的帖子

在Delphi XE2中使用泛型和转发声明时的编译器错误

我开始使用Delphi 2010项目,然后迁移到XE,现在我尝试迁移到XE2.在XE2(Update 4 Hotfix 1)中进行编译后,单元测试开始失败.经过一些调试后,很明显以下代码未正确编译:

program ForwardDeclaration;

{$APPTYPE CONSOLE}

uses
    System.SysUtils;

type
    TEntityBase = class(TObject)
    protected
        FModel: Integer;
    public
        constructor Create(const AModel: Integer);
    end;

    TEntity<TKey> = class(TEntityBase)
    end;

    TMyEntity2 = class;

    TMyEntity1 = class(TEntity<Integer>)
        FData: Integer;
    end;

    TMyEntity2 = class(TMyEntity1)
    end;

constructor TEntityBase.Create(const AModel: Integer);
begin
    inherited Create;
    FModel := AModel;
end;

var
    MyEntity: TMyEntity1;
begin
    try
        Writeln(TEntityBase.ClassName, ': ', TEntityBase.InstanceSize, ' bytes');
        Writeln(TMyEntity1.ClassName, ': ', TMyEntity1.InstanceSize, ' bytes');
        MyEntity := TMyEntity1.Create(100);
        Assert(MyEntity.FData = 0);
    except
        on E: Exception do …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe2

45
推荐指数
1
解决办法
1264
查看次数

标签 统计

delphi ×1

delphi-xe2 ×1