当前位置:  开发笔记 > 编程语言 > 正文

在作为指针传递的函数内部赋值?

如何解决《在作为指针传递的函数内部赋值?》经验,为你挑选了1个好方法。

正如其他答案所指出的那样 - 在通话后两者仍然是NULL.但是,这个问题有两种可能的解决方案:

1)参考

void assignObject(ClassA*& pa, ClassB*& pb)
{
    pa = new ClassA;
    pb = new ClassB;
}

ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(pa, pb); // both will be assigned as expected.

2)指针

void assignObject(ClassA** pa, ClassB** pb)
{
    assert(pa != NULL); assert(pb != NULL);
    *pa = new ClassA;
    *pb = new ClassB;
}
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(&pa, &pb); // both will be assigned as expected.

大多数程序员可能会选择引用,因为它们不需要断言任何东西(引用永远不能为NULL).



1> Paulius..:

正如其他答案所指出的那样 - 在通话后两者仍然是NULL.但是,这个问题有两种可能的解决方案:

1)参考

void assignObject(ClassA*& pa, ClassB*& pb)
{
    pa = new ClassA;
    pb = new ClassB;
}

ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(pa, pb); // both will be assigned as expected.

2)指针

void assignObject(ClassA** pa, ClassB** pb)
{
    assert(pa != NULL); assert(pb != NULL);
    *pa = new ClassA;
    *pb = new ClassB;
}
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(&pa, &pb); // both will be assigned as expected.

大多数程序员可能会选择引用,因为它们不需要断言任何东西(引用永远不能为NULL).

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有