2011-09-08 5 views
3

IDL에서 인터페이스 배열을 반환하고 싶습니다. 내가 (VS 2010 년)이 경고를COM - 개체 인터페이스 배열을 반환하십시오.

interface ISecurityPolicy : IDispatch{ 
[id(6)]   HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IEntityPolicy*)* result); 
} 

: 나는이 시도 1 경고 MIDL2456 경고 : [매개 변수 '결과'절차 'SAFEARRAY (인터페이스 포인터)에 관한 프록시를 생성하여 작동하지 않습니다 GetPolicyList '(인터페이스'ISecurityPolicy ')

http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/84a632a9-4e29-4a95-8da7-f7aedb650339이 제안 할 수있는 것처럼 위조 경고입니까?

+0

[ref] 속성을 삭제하면별로 의미가 없습니다. –

+0

나는 아직도 그것에 대한 경고를받는 것이 두렵다. 다른면에서는 일을 처리하기 위해 반환 유형을 SAFEARRAY (IUnknown *) *로 조정해야합니다. – Ghita

+0

동일한 제안에 대해 컬렉션 구현을 사용하는 것이 더 나을 수 있습니다. 훨씬 더 명확하고, 더 많은 작업 만 할 수 있습니다 :-) – Ghita

답변

2

이 같은 선언 :

interface ISecurityPolicy : IDispatch{ 
[id(6)]   HRESULT GetPolicyList([out, ref, retval] SAFEARRAY(IUnknown*)* result); 
} 

사물 인터페이스의 구현을위한 조금 단순화합니다. 호출자에게 "컬렉션"에 대한 반복자를 반환하기 위해 일련의 인터페이스를 반환하는 대신에 여전히 더 좋은 아이디어 일 수 있습니다.