无法使用指针查找正确的元素 - 从函数返回时,对象上的 poiting 为 null

can't use pointer to find right element - poiting on object is null on return from function

本文关键字:返回 函数 对象 null poiting 指针 查找 元素      更新时间:2023-10-16

我用一些函数编写了一些代码,这些函数可以获取指针和一些常量,需要返回其指向的元素=

我找不到我的指针在从函数返回时为空的原因 -请提供任何帮助

    class MyClass 
    {
        // Some Code    
    }
    void FindCurrectMyClass(const int val, MyClass* myClassPtr)
    {
        switch(val)
        {
            case(0):
            {
                myClassPtr = &myClass0;
            }
            break;
            case(1):
            {
                myClassPtr = &myClass1;     // get here and myClassPtr is not null
            }
            break;
            case(2):
            {
                myClassPtr = &myClass2;
            }
            break;
        }
    }
    void main()
    {
        MyClass myClass0;
        MyClass myClass1;
        MyClass myClass2;   
        MyClass* myClassPtr = nullPtr;
        FindCurrectMyClass(1, myClassPtr );
        myClassPtr->Func();     // myClassPtr is null 
    }

编辑,我以为我们在C中,但我们在C++

取代

void FindCurrectMyClass(const int val, MyClass* myClassPtr)

void FindCurrectMyClass(const int val, MyClass*& myClassPtr)

否则你只修改本地参数,所以当你返回时什么都不做,myClassPtr 仍然是空


当然你必须把

MyClass myClass0;
MyClass myClass1;
MyClass myClass2;   

例如,在 FindCurrectMyClass 之前的全局范围内,否则无法访问它们