delphi - 无法将 TMyClass 对象分配给其基本接口(interface)类型的变量

标签 delphi inheritance interface variable-assignment delphi-xe2

为什么我无法将类分配给其基本接口(interface)类型的变量。

考虑我们有以下内容:

IInt1 = interface
  procedure Test1;
end;

IInt2 = interface(IInt1)
  procedure Test2;
end;

TCustomClass = class(TInterfacedObject)
end;

TMyClass = class(TCustomClass, IInt2)
  procedure Test1;
  procedure Test2;
end;

var
  Obj: IInt1;
begin
  Obj := TMyClass.Create; // <!-- E2010 Incompatible types: 'IInt1' and 'TMyClass'
  ...
end;


E2010 Incompatible types: 'IInt1' and 'TMyClass'

这是编译器中的错误还是根本不允许的操作。这可以解决吗?

最佳答案

在声明中的已实现接口(interface)列表中包含 IInt1:

TMyClass = class(TCustomClass, IInt1, IInt2)
end;

关于delphi - 无法将 TMyClass 对象分配给其基本接口(interface)类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586895/

相关文章:

delphi - delphi中父类和子类之间的转换

delphi - 将 Blob 内容显示到 OleContainer Delphi

Delphi 7 - 如何用画笔填充圆角矩形?

c++ - 扩展两个类的参数的语法

javascript - Object.create 如何在 Javascript 中不允许多重继承?

go - 如何修改未知类型的结构中的字段?

java - 接口(interface)、抽象和类

android - 如何将我的应用程序保留在前台?

c++ - 如何创建具有相同默认构造函数但具有不同值的派生类?

java - 我们可以在 Java 中创建接口(interface)的实例吗?