我想从IDL返回一个接口数组。 我试试这个:
interface ISecurityPolicy : IDispatch{
[id(6)] HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IEntityPolicy*)* result);
}
我收到此警告(在VS 2010中): 警告1警告MIDL2456:SAFEARRAY(接口指针)使用midl生成的代理不起作用:[过程'GetPolicyList'的参数'结果'(接口'ISecurityPolicy')]
这是http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/84a632a9-4e29-4a95-8da7-f7aedb650339可能暗示的虚假警告吗?
答案 0 :(得分:2)
将此声明为:
interface ISecurityPolicy : IDispatch{
[id(6)] HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IUnknown*)* result);
}
为实现接口简化了一些事情。 它可能仍然是一个更好的主意,但不是将一个接口数组返回给调用者,而是通过“集合”返回迭代器。