0

Ошибка LNK2019 ссылка на неразрешенный внешний символ "void __cdecl SortTravelersList(struct Travelers * ,int (__cdecl)(struct Travelers *,struct Travelers *))" (?SortTravelersList@@YAXPAPAUTravelers@@P6AHPAU1@1@Z@Z) в функции _main.

#include<iostream>
    using namespace std;
struct Travelers
{
    int ticket_code;
    string lastname;
    int numberofthings;
    int luggage_weight;
    Travelers* Next;
};

Travelers* Head = 0;
struct Date {
    int day;
    int month;
    int year;
    Date* Next;
};
Date* Head2 = 0;
struct Date2 {
    int day;
    int month;
    int year;
    Date* Next;
};
Date* Head3 = 0;
void Insert_Traveler(Travelers** list, Travelers* t, unsigned int pos)
{
    if (pos == 0 || *list == 0) {
        t-&gt;Next = *list;
        *list = t;
    }
    else if (pos == 0) {
        t-&gt;Next = *list;
        *list = t;
    }
    else {
        Travelers* p = *list;
        for (unsigned int i = 0; p-&gt;Next; i++, p = p-&gt;Next)
            if (i == pos - 1)
                break;
        t-&gt;Next = p-&gt;Next;
        p-&gt;Next = t;
    }
}
Travelers* Choose_Travelers(Travelers* list, unsigned int pos)
{
    while (list &amp;&amp; pos)
    {
        list = list-&gt;Next;
        --pos;
    }

    return list;
}
Travelers* Choose_NextAndBefore1(Travelers* list, unsigned int pos) {
    return Choose_Travelers(list, pos + 1);
}
Travelers* Choose_NextAndBefore2(Travelers* list, unsigned int pos) {
    return Choose_Travelers(list, pos - 1);
}
int Location(Travelers* list, string key) {
    Travelers* p = list;
    unsigned int n = 0;
    for (; p; n++, p = p-&gt;Next) {
        if (p-&gt;lastname == key) break;
    }
    return n;
}
Travelers* Delete_Traveler(Travelers** list, unsigned int pos)
{
    Travelers* d = 0;

    if (pos == 0) {
        d = *list;
        *list = d-&gt;Next;
    }
    else {
        Travelers* p = *list;
        for (unsigned int i = 0; p-&gt;Next; i++, p = p-&gt;Next)
            if (i == pos - 1) {
                d = p-&gt;Next;
                p-&gt;Next = d-&gt;Next;
                break;
            }
    }

    return d;
}

void Print_Travelers(Travelers* list)
{
    for (Travelers* p = list; p; p = p-&gt;Next)
        cout &lt;&lt; &quot;code: &quot; &lt;&lt; p-&gt;ticket_code
        &lt;&lt; &quot;  &quot; &lt;&lt; p-&gt;lastname
        &lt;&lt; &quot; nth: &quot; &lt;&lt; p-&gt;numberofthings
        &lt;&lt; &quot; weight: &quot; &lt;&lt; p-&gt;luggage_weight
        &lt;&lt; '\n';
    cout &lt;&lt; '\n';
}
void Print_Date(Date* list) {
    for (Date* p = list; p; p = p-&gt;Next)
        cout &lt;&lt; &quot;day: &quot; &lt;&lt; p-&gt;day
        &lt;&lt; &quot; month: &quot; &lt;&lt; p-&gt;month
        &lt;&lt; &quot; year: &quot; &lt;&lt; p-&gt;year
        &lt;&lt; '\n';
    cout &lt;&lt; '\n';
}
void Unite_Date(Date* head1, Date* head2)
{
    Date* p = head1;
    while (p-&gt;Next != NULL)
        p = p-&gt;Next;
    p-&gt;Next = head2;
}
Date* Find_Date(Date* list, size_t pos)
{
    if (pos == 0 || !list)
        return list;

    while (list-&gt;Next &amp;&amp; pos)
    {
        list = list-&gt;Next;
        --pos;
    }
    return list;
}

void Insert_Date(Date** list, Date* pos, Date* item)
{
    if (!pos)
    {
        item-&gt;Next = *list;
        *list = item;
    }
    else
    {
        item-&gt;Next = pos-&gt;Next;
        pos-&gt;Next = item;
    }
}

void Insert_Date(Date** list, Date* t, size_t pos)
{
    Insert_Date(list, Find_Date(*list, pos), t);
}
void SortTravelersList(Travelers** list, int (*cmpf)(Travelers* s1, Travelers* s2));
int cmpf_ticket(Travelers* s1, Travelers* s2) {
    return s1-&gt;ticket_code - s2-&gt;ticket_code;
}

int cmpf_lastname(Travelers* s1, Travelers* s2) {
    int rc = 0;
    if (s1-&gt;lastname &lt; s2-&gt;lastname)
        rc = -1;
    else if (s1-&gt;lastname &gt; s2-&gt;lastname)
        rc = 1;
    return rc;
}
int main()
{

    Date* q = new Date;
    q-&gt;day = rand() % 30;
    q-&gt;month = rand() % 12;
    q-&gt;year = 2021;
    Insert_Date(&amp;Head2, q, 1);
    Print_Date(Head2);
    Date* w = new Date;
    w-&gt;day = rand() % 30;
    w-&gt;month = rand() % 12;
    w-&gt;year = 2021;
    Insert_Date(&amp;Head3, w, 1);
    Print_Date(Head3);
    for (int i = 0; i &lt; 10; i++) {
        char nm[10];
        Travelers* p = new Travelers;
        p-&gt;ticket_code = rand() % 1000;
        sprintf_s(nm, &quot;tr_%d&quot;, i);
        p-&gt;lastname = nm;
        p-&gt;numberofthings = rand() % 5 + 1;
        p-&gt;luggage_weight = (rand() % 10 + 1) * p-&gt;numberofthings;

        Insert_Traveler(&amp;Head, p, i);
    }

    cout &lt;&lt; &quot;list of travelers\n&quot;;
    Print_Travelers(Head);

    cout &lt;&lt; &quot;delete some travelers\n&quot;;
    Travelers* p = Delete_Traveler(&amp;Head, 9);
    if (p) {
        cout &lt;&lt; &quot;delete as pos &quot; &lt;&lt; 9 &lt;&lt; &quot;  &quot;
            &lt;&lt; &quot;code: &quot; &lt;&lt; p-&gt;ticket_code
            &lt;&lt; &quot;  &quot; &lt;&lt; p-&gt;lastname
            &lt;&lt; &quot; nth: &quot; &lt;&lt; p-&gt;numberofthings
            &lt;&lt; &quot; weight: &quot; &lt;&lt; p-&gt;luggage_weight
            &lt;&lt; '\n';
        delete p;
    }


    for (int i = 0; i &lt; 10; i++) {
        p = Delete_Traveler(&amp;Head, i);
        if (p) {
            cout &lt;&lt; &quot;delete as pos &quot; &lt;&lt; i &lt;&lt; &quot;  &quot;
                &lt;&lt; &quot;code: &quot; &lt;&lt; p-&gt;ticket_code
                &lt;&lt; &quot;  &quot; &lt;&lt; p-&gt;lastname
                &lt;&lt; &quot; nth: &quot; &lt;&lt; p-&gt;numberofthings
                &lt;&lt; &quot; weight: &quot; &lt;&lt; p-&gt;luggage_weight
                &lt;&lt; '\n';
            delete p;
        }
    }

    cout &lt;&lt; &quot;------\n&quot;;
    cout &lt;&lt; &quot;\nlist of travelers after deletions\n&quot;;
    Print_Travelers(Head);
    int pos;
    cout &lt;&lt; &quot;Choose index&quot; &lt;&lt; endl;
    cin &gt;&gt; pos;
    Travelers* k = Choose_Travelers(Head, pos);
    if (!k)
        std::cout &lt;&lt; &quot;NOT FOUND&quot; &lt;&lt; std::endl;
    else
    {
        cout &lt;&lt; &quot;code: &quot; &lt;&lt; k-&gt;ticket_code
            &lt;&lt; &quot;  &quot; &lt;&lt; k-&gt;lastname
            &lt;&lt; &quot; nth: &quot; &lt;&lt; k-&gt;numberofthings
            &lt;&lt; &quot; weight: &quot; &lt;&lt; k-&gt;luggage_weight
            &lt;&lt; '\n';
    }
    cout &lt;&lt; &quot;Enter a key you want to choose&quot; &lt;&lt; endl;
    string key;
    cin &gt;&gt; key;
    int t = Location(Head, key);
    cout &lt;&lt; t &lt;&lt; endl;
    int poss;
    cout &lt;&lt; &quot;Choose index&quot; &lt;&lt; endl;
    cin &gt;&gt; poss;
    Travelers* e = Choose_NextAndBefore1(Head, poss);
    if (!e)
        std::cout &lt;&lt; &quot;NOT FOUND&quot; &lt;&lt; std::endl;
    else
    {
        cout &lt;&lt; &quot;code: &quot; &lt;&lt; e-&gt;ticket_code
            &lt;&lt; &quot;  &quot; &lt;&lt; e-&gt;lastname
            &lt;&lt; &quot; nth: &quot; &lt;&lt; e-&gt;numberofthings
            &lt;&lt; &quot; weight: &quot; &lt;&lt; e-&gt;luggage_weight
            &lt;&lt; '\n';
    }
    Travelers* b = Choose_NextAndBefore2(Head, poss);
    if (!b)
        std::cout &lt;&lt; &quot;NOT FOUND&quot; &lt;&lt; std::endl;
    else
    {
        cout &lt;&lt; &quot;code: &quot; &lt;&lt; b-&gt;ticket_code
            &lt;&lt; &quot;  &quot; &lt;&lt; b-&gt;lastname
            &lt;&lt; &quot; nth: &quot; &lt;&lt; b-&gt;numberofthings
            &lt;&lt; &quot; weight: &quot; &lt;&lt; b-&gt;luggage_weight
            &lt;&lt; '\n';
    }
    Unite_Date(Head2, Head3);
    Print_Date(Head2);
    SortTravelersList(&amp;Head, cmpf_ticket);
    Print_Travelers(Head);
}

  • А писать код этой функции кто будет? Дейкстра?... – Harry Apr 04 '21 at 07:07
  • Ваша ссылка на все вопросы опять не в тему. Там нет объяснения, что функции с одним именем, но с другим набором/типов аргументов они разные, по-этому такой функции с двумя аргументами не нашлось. @Harry – AlexGlebe Apr 04 '21 at 07:34
  • @AlexGlebe Выделяю SortTravelersList, делаю поиск по странице, вижу два - в сообщении об ошибке, одно - в объявлении функции, одно - в вызове. Что я не так написал? Где код этой функции? который я не заметил? – Harry Apr 04 '21 at 07:54
  • @AlexGlebe Да где же? Вот объявление - void SortTravelersList(Travelers** list, int (*cmpf)(Travelers* s1, Travelers* s2)); - два аргумента, вот вызов - SortTravelersList(&Head, cmpf_ticket); - тоже два. В вашем варианте не прошла бы компиляция, а тут - не идет ликновка – Harry Apr 04 '21 at 08:22
  • Всё правильно, я проглядел. dada dasda уже хочет, чтобы мы всё написали. @Harry – AlexGlebe Apr 04 '21 at 08:24

0 Answers0