以下是我正在处理的代码的简化示例。这是一个将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;
}
答案 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)