Упрощение кода: объединение двух функций в одну - передача структуры в качестве параметра? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть следующие (односвязные списки) две разные структуры:

struct Main {
    int data1;
    std::string some_data;
    Main *next;
}
struct Side {
    int data2;
    int data3;
    Side *next;
}

И следующие две функции для удаления только первого узла из определенного связанного списка Main или Side:

void DeleteFirstMain(Main *&pHeadMain)
{
    Main *MainToBeDeleted;

    if (pHeadMain == nullptr)
        std::cout << "List is already empty.";
    else
    {
        MainToBeDeleted = pHeadMain;
        pHeadMain = pHeadMain->next;

        /* Clears the memory occupied by first node*/
        delete MainToBeDeleted;
    }
}

void DeleteFirstSide(Side *&pHeadSide)
{
    Side *SideToBeDeleted;

    if (pHeadSide == nullptr)
        std::cout << "List is already empty.";
    else
    {
        SideToBeDeleted = pHeadSide;
        pHeadSide = pHeadSide->next;

        /* Clears the memory occupied by first node*/
        delete SideToBeDeleted;
    }
}

И все прекрасно работает.

Однако я полагаю, что две функции можно объединить в одну и, таким образом, немного привести в порядок код - обе функции по сути делают одно и то же, но с разной структурой.Это довольно простой материал, но в C ++ я понятия не имею, как правильно передать структуру «шаблона» в функцию в качестве аргумента.

Как всегда, помощь приветствуется.Спасибо.

...