【发布时间】:2011-08-27 23:56:38
【问题描述】:
这可能很困难——我在一个对象上使用了多个 CORBA 接口,所以它看起来像这样:
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
【问题讨论】:
标签: interface casting corba freepascal