我的班级有一名成员:
class MyNativeXPCOMObject ... {
...
private:
nsCOMPtr<nsISomeInterface> someInterface_;
...
};
我有这样做的方法:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_);
*aSomeInterface = someInterface_;
return NS_OK;
}
但是 Gecko 9 强制你不能调用AddRef()
or Release()
on nsCOMPtr<>
s。所以现在我正在这样做:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_.get()); // <--- Added .get()!
*aSomeInterface = someInterface_;
return NS_OK;
}
但是直接访问原始指针让我觉得很脏。AddRef()
在吸气剂中取出参数的正确方法是什么?
文档没有帮助。