如何设置指针pTT在函数内设置,而不会丢失指针beaning范围?
说我有
BaseObj* setAction(Holder* pHold)
{
pHold = someFrameWorkFactory()->GetHolder();
BaseObj* pBase = new (pHold);
return pBase;
}
我想稍后在应用程序中使用pHold指针,但它仍然是空指针
如果我打电话
Holder* m_Holder;
setAction(m_Holder);
m_Holder->getId() //< exception
答案 0 :(得分:1)
使用
BaseObj* setAction(Holder* &pHold)
{
pHold = someFrameWorkFactory()->GetHolder();
BaseObj* pBase = new (pHold);
return pBase;
}
如果你想要的是修改pHold变量。
答案 1 :(得分:0)
您必须记住,除非明确要求,否则参数会按值传递,即复制它们。
因此,当您将指针传递给函数时,它会被复制,并且该函数仅修改副本。要修改它,你必须通过引用传递它:
BaseObj* setAction(Holder*& pHold)
答案 2 :(得分:0)
使用参考:
BaseObj* setAction(Holder* &pHold) {
pHold = someFrameWorkFactory()->GetHolder();
BaseObj* pBase = new (pHold);
return pBase;
}