Shaharyaar Ответов: 1

Ошибка LNK 2019 в моей программе


Прежде всего, извините за такое плохое название вопроса. Я не знал, что там писать. Я пишу небольшое настольное банковское приложение в качестве проекта программирования в конце семестра (кстати, я инженер-электрик, а не просто программное обеспечение). Таким образом, я сталкиваюсь с ошибкой LNK 2019, как вы можете видеть на следующем рисунке. Я два часа пытался решить эту проблему, но пока не преуспел. Вы можете видеть, что эта программа довольно проста. List.cpp файл в основном является реализацией связанного списка и отображается на консоли в основной функции.

Я буду очень благодарен, если вы поможете мне в этом вопросе.

https://i.imgur.com/oA3euuk.png

Узел.H-файл
#pragma once
    #ifndef NODE_H
    #define NODE_H
    #include <string>

    using namespace std;

    class Node {
	friend class List;
    public:
	string name;
	string password;
	int age;
	Node *next;
    };
    #endif


Список.H-файл

#pragma once
   #ifndef LIST_H
   #define LIST_H

   #include <string>
   #include "Node.h"
   using namespace std;

   class List {
   public:
   Node *head, *tail;
   public:
   List();
   void createNode(string name, string password, int age);
   void printList();
   void insertAtStart(string name, string password, int age);
   void insertAtPosition(int pos, string name, string password, int age);
   };
   #endif


List.cpp файл

#include <iostream>
  #include "Node.h"
  #include "List.h"
  using namespace std;

  List::List() {
      head = NULL;
      tail = NULL;
  }

  void List::createNode(string name ,string password, int age) {
      Node *node = new Node;
      node->age = age;
      node->name = name;
      node->next = NULL;
      if (head == NULL) {
          head = node;
          tail = node;
          node = NULL;
      }
      else {
          tail->next = node;
          tail = node;
      }
  }

  void List::printList() {
      Node *temp = new Node;
      temp = head;
      while (temp != NULL) {
          cout << "Age of Person is : " <<temp->age << "\t";
          cout << "Name of a Person is : " << temp->name << "\n";
          temp = temp->next;
      }
  }
  void List::insertAtStart(string name, string password, int age) {
      Node *node = new Node;
      node->age = age;
      node->name = name;
      node->next = head;
      head = node;
  }

  void List::insertAtPosition(int pos,string name, string password, int age) {
      Node *node = new Node;
      Node *current = new Node;
      Node *previous = new Node;
      current = head;
      for (int i = 1; i < pos; i++) {
          previous = current;
          current = current->next;
      }
      node->age = age;
      node->name = name;
      previous->next = node;
      node->next = current;
  }


main.cpp файл

#include <iostream>
#include "List.h"

int main() {
List list;
list.createNode("Roshan", "ros", 10);
list.insertAtStart("Bablo", "bab", 60);
list.createNode("Gudda", "guda", 20);
list.createNode("Guddu", "gudu", 89);
list.insertAtPosition(3, "Billa", "bil", 111);
list.printList();

getchar();
return 0;
}


Что я уже пробовал:

Ну, я пытался решить эту проблему, читая разные материалы в интернете, но пока ни один из них мне не помог.

Richard MacCutchan

Каков полный текст сообщения об ошибке?

CPallini

Вы включили в него List.cpp файл в вашем проекте?

1 Ответов

Рейтинг:
10

KarstenK

То ошибка компоновщика 2019 и я думаю, что у тебя нет такого желания. lisp.cpp входит в проект. Используйте команду "добавить в проект"..."

Но, глядя на ваш код, я вижу некоторые ошибки. Как здесь:

void List::printList() {
     Node *temp = head;
При использовании только указателя вам не нужно создавать объект. То же самое при insertAtPosition с текущим и предыдущим.

Ваша реализация нуждается в некотором управлении памятью. Правило каждое новое нуждается в удалении. Деструктор списка-это хорошее место для удаления всех членов списка.

Совет: напишите конструктор для узла(имя,пароль,возраст)