нельзя использовать указатель для поиска нужного элемента - при возврате из функции указание на объект равно нулю - PullRequest
0 голосов
/ 21 января 2019

Я написал некоторый код с некоторой функцией, которая получает указатель и некоторое значение const, и мне нужно вернуть элемент, на который указывает точка =

Я не могу найти причину, по которой мой указатель равен нулю при возврате из функции - любая помощь, пожалуйста

    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 Ответ

0 голосов
/ 21 января 2019

edit, я представлял, что мы на C, но мы на C ++

заменить

void FindCurrectMyClass(const int val, MyClass* myClassPtr)

от

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

иначе вы изменяете только локальный параметр, поэтому при возврате ничего не делается, и myClassPtr по-прежнему равен нулю


Конечно, вы должны поставить

MyClass myClass0;
MyClass myClass1;
MyClass myClass2;   

например, в глобальной области видимости до FindCurrectMyClass , иначе никто не сможет получить к ним доступ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...