c ++向函数发送空指针并将其设置为函数而不丢失范围?

时间:2014-03-27 10:26:35

标签: c++ pointers

如何设置指针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 

3 个答案:

答案 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;
}