这可能证明是困难的 - 我使用一个对象在多个CORBA接口,所以它看起来在某种程度上是这样的:的Free Pascal多个接口问题
TBaseObject = class(TSuperBaseObject, IInterfaceA)
function Afunction; // implemented from IInterfaceA
end;
TOtherObject = class(TBaseObject, IInterfaceB);
function Bfunction; // implemented from IInterfaceB
end;
现在我有一个函数,它的变体,和在该变体是一个对象的情况下,它假设对象是一个IInterfaceA对象:
case var.vtype of
...
vtObject : begin
Something := (var.vObject as IInterfaceA).AFunction; (1)
end;
end;
现在,一旦我运行该代码,并传递一个TOtherObject到函数中,管线(1)BFunction被调用与强制参数!
我做错了什么或者它是编译器中的错误?此外,在不改变班级结构的情况下,以任何合理的方式来规避这种情况?因为如果有人想尝试EAccessViolation
全码 - http://pastebin.com/D7sDpDHx
+1:FPC似乎没有支持关键字,它也使用CORBA风格的接口,而不是COM,但答案让我在搜索的正确轨道上。 –