【发布时间】:2011-12-13 23:19:12
【问题描述】:
我的班级有一个成员:
class MyNativeXPCOMObject ... {
...
private:
nsCOMPtr<nsISomeInterface> someInterface_;
...
};
我有这样做的方法:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_);
*aSomeInterface = someInterface_;
return NS_OK;
}
但 Gecko 9 强制您不得在 nsCOMPtr<>s 上调用 AddRef() 或 Release()。所以现在我正在这样做:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_.get()); // <--- Added .get()!
*aSomeInterface = someInterface_;
return NS_OK;
}
但是直接访问原始指针让我觉得很脏。 AddRef() 在 getter 中输出参数的正确方法是什么?
documentation 没有帮助。
【问题讨论】:
标签: firefox-addon smart-pointers xpcom reference-counting geckosdk