如何传递nullptr?

时间:2017-08-04 21:37:16

标签: c++ pointers

以下是我正在处理的代码的简化示例。这是一个将A类指针作为参数的函数。我想传递一个已初始化为nullptr的指针。如果不首先将它初始化为某个垃圾临时值,是否可以传递nullptr?

class A
{ 
    // stuff
};

class B
{
public:
    A* pA1;
    A objA;
    std::vector<A*> vecB;
    B() : pA1 (nullptr) { vecB.push_back(&objA); }
};

void function(A* p);

A* pA2;

int main()
{
    B objB;
    pA2 = objB.vecB[0];
    function(objB.pA1);

    return 0;
}

void function(A* p)
{
    p = pA2;
}

3 个答案:

答案 0 :(得分:3)

在评论中,你说:

  

该功能的目的是实现这一目标:objB.pA1 = pA2

我认为您需要做的是传递对指针的引用,而不是按值传递指针。使用:

void function(A*& p) // The argument type needs to be "A* &", not "A*"
{
    // Now, the change will be visible in the calling program.
    p = pA2;
}

答案 1 :(得分:2)

是。可以分配任何原始指针类型,因此使用nullptr值进行初始化。例如:

static A* pA2 = nullptr;

答案 2 :(得分:0)

aschepter在评论中给了我答案,非常感谢你。

void function(A* p)

应该是

void function(A*& p)