1

編集: 偶発的な引数のタイプミスを not に修正し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 ;
}

しかし、うまくいきません - ここで根本的な誤解をしていますか? これはいけると思った……。

4

1 に答える 1

6

関数パラメーターからポインターを変更するには、コピーではなく元のポインターを変更する必要があります。

 func2(MyClass*& m, int x);
 //            ^
于 2013-11-09T01:17:05.027 に答える