У меня есть участник для моего класса:
class MyNativeXPCOMObject ... {
...
private:
nsCOMPtr<nsISomeInterface> someInterface_;
...
};
У меня есть методы, которые делают это:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_);
*aSomeInterface = someInterface_;
return NS_OK;
}
Но Gecko 9 требует, чтобы вам не разрешали звонить AddRef()
или Release()
на nsCOMPtr<>
с. Так что теперь я делаю это:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_.get()); // <--- Added .get()!
*aSomeInterface = someInterface_;
return NS_OK;
}
Но прямой доступ к необработанному указателю заставляет меня чувствовать себя грязным. Как правильно AddRef()
для параметров в геттерах?
Документация не помогла.