指针到指针分配不起作用

Pointer to pointer assignment isnt working

本文关键字:指针 不起作用 分配      更新时间:2023-10-16

编辑:我已经修复了func2()中意外的参数错别字,以MyClass*而不是MyClass

我有这样的课程:

#include "MyClass.h"
class X{
    public:
        X();
        MyClass* m;
        func1();
        func2(MyClass* m, int x);
    private:
}

源:

#include "X.h"
X::X{
    m = null_ptr;
}
X::func1(){
    //Pass the un-initialized data member m here...
    func2(m, 6);
    //When I get to this point m has not been assigned, even though it was passed as a pointer to func2()
}
X::func2(MyClass* old_obj, int x){
    //Please forgive the memory management for a second....
    MyClass* new_obj = new MyClass(x);
    //This should initialise the data member m??????
    old_obj = new_obj ;
}

但是它不起作用 - 我在这里做了一个基本的错误假设吗?我以为这会起作用。

要从函数参数修改指针,您需要修改原始指针而不是副本。

 func2(MyClass*& m, int x);
 //            ^