将指针传递给Class方法

时间:2018-06-01 05:05:40

标签: c++

我正在学习C ++并且指针有问题。 我想将指针传递给我的方法并为其分配一个新值。但是在调用方法后我的指针为0。我究竟做错了什么?感谢

#include <iostream>

using namespace std;

class MyObject
{
    public:
        bool search(int* a) 
        {
            int* test = new int(23);
            a = test;
            return true;
        }
};


MyObject* obj;

void search()
{
    int* test = NULL;
    obj->search(test);
    cout << test << endl;
}

int main(int argc, char *argv[])
{
    obj = new MyObject();
    search();
}

3 个答案:

答案 0 :(得分:3)

您需要通过引用传递指针。

bool search(int*& a)

如果没有这个,指针将按值传递,并且您只分配您传递的内容的副本。要分配您传递的实际对象/变量,需要通过引用传递指针。

进一步阅读:What's the difference between passing by reference vs. passing by value?

答案 1 :(得分:0)

a是一个局部变量,如果您在search方法执行期间设置其值,则不会对免费{test变量产生任何影响search 1}}函数,因为a只是test的副本。

您应该通过引用传递a

bool search(int *&a) { 
    int* test = new int(23);
    a = test; 
    return true; 
}

答案 2 :(得分:0)

指针是通过值而不是引用传递的。这意味着本地变量test的值未被更改。

取而代之的是bool search(int*& a)

这将传递对方法的引用,该方法将更新调用函数中的局部变量。