以下情况:
class Main{
void MainMethod(){
C * c;
B * b = new B();
b->fillC(c);
}
};
class B{
void fillC(C* c){
c = new C();
}
};
class C{
};
在我的软件中,我有这种情况。在程序结束时,对于 Main 类,c 仍然是空的。为什么是这样?
指针c被复制到fillC函数中——这称为按值传递。然后,您分配给该副本。原始c变量 fromMainMethod不受影响。如果要更改指针,则需要通过引用传递指针:
class B{
void fillC(C*& c){
c = new C();
}
};
现在cinside指向与infillC相同的指针。改变一个值会影响另一个值。cMainMethod
您也可以将参数更改fillC为 type C**,调用它fillC(&c)并分配给它*c = new C()- 但您已经在使用来自其他语言的成语混搭,所以我不推荐这样做。
不要忘记delete c在某个时候做!
将 B::fillC 更改为:
class B{
void fillC(C*& c){
c = new C();
}
};