0
내 클래스의 멤버를 가지고 :out 매개 변수로 사용할 nsCOMPtr을 AddRef()하는 방법은 무엇입니까?
class MyNativeXPCOMObject ... {
...
private:
nsCOMPtr<nsISomeInterface> someInterface_;
...
};
나는 이렇게 방법이 있습니다
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_);
*aSomeInterface = someInterface_;
return NS_OK;
}
하지만 게코 (9) 당신이 nsCOMPtr<>
들에 AddRef()
또는 Release()
를 호출 할 수 없습니다 있다는 것을 적용합니다. 이제는 다음과 같이합니다 :
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_.get()); // <--- Added .get()!
*aSomeInterface = someInterface_;
return NS_OK;
}
그러나 직접 원시 포인터에 액세스하면 더러운 느낌이 들게됩니다. getters에서 out 매개 변수에 대한 AddRef()
의 적절한 방법은 무엇입니까?
documentation은 도움이되지 않았습니다. 당신이 그것에 NS_IF_ADDREF
을 사용할 수 있도록
*aSomeInterface = someInterface_;
NS_IF_ADDREF(*aSomeInterface);
*aSomeInterface
원시 포인터 :
한숨. 예, 그렇게하는 것이 뻔한 일입니다. :) –