代码之家  ›  专栏  ›  技术社区  ›  Yanshof

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

  •  -2
  • Yanshof  · 技术社区  · 6 年前

    我写了一些代码,其中有些函数获取指针和常量,需要返回其指向的元素=

    我找不到从函数返回时指针为空的原因- 请帮忙

        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 
        }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   bruno    6 年前

    编辑,我想象我们在C,但是我们在C++中

    代替

    void FindCurrectMyClass(const int val, MyClass* myClassPtr)
    

    通过

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

    否则,您只修改本地参数,这样当您返回时,什么都不做,并且 麦克拉斯普特 仍然是空的


    当然你必须

    MyClass myClass0;
    MyClass myClass1;
    MyClass myClass2;   
    

    例如,在全局范围之前 FordCurrimeMyCype 否则就无法访问它们