這可能證明是困難的 - 我使用一個對象在多個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,但答案讓我在搜索的正確軌道上。 –