致命错误LNK1561 - 必须定义入口点

时间:2014-12-11 10:23:11

标签: c++ linked-list

到目前为止,我已经创建了一个简单的链表项目,我将在未来构建。所有文件都可以正确编译,但是当我尝试构建项目时,会出现链接错误。我用一个空项目开始。 main.cpp用于演示我的链表实际上是有效的。我真的卡住了,不知道如何解决这个问题。

Main.cpp的

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include "LinkedList.cpp"
#include "LinkedList.h"

using namespace SDI;

template <class T>
int LinkedList<T>::main()
{
    LinkedList<T> menu;             

    menu.insert(1);                     
    menu.insert(4);
    menu.insert(7);
    menu.insert(2);
    menu.insert(8);
    menu.display();                 
    Std::cout << "-----" << endl;
    menu.remove(2);                     
    menu.remove(1);
    menu.remove(10);
    menu.display();

    return 0;
};

头文件LinkedList.h

#ifndef SDI_LL 
#define SDI_LL          

namespace SDI
{
    template < class T >                
    class LinkedList                
    {
        class Node                   
        {
            int number;             
            Node* next;            
        };

    private:

        T head;
        T current;        
        T temp;

    public:
        LinkedList();                                   
        ~LinkedList();                                  

        int main();
        void insert(int add);                           
        void remove(int remove);                       
        void display();                                 
    };

}
#endif

LinkedList.cpp

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <string>
#include "LinkedList.h"

using namespace SDI;

template <class T>
LinkedList<T>::LinkedList()            
{
    head = NULL;
    current = NULL;                     
    temp = NULL;
};

template <class T>
void LinkedList<T>::insert(int add)         
{
    newnode = new Node;         
    newnode->next = NULL;                       
    newnode->number = add;                  

    if (head != NULL)                       
    {
        current = head;                     
        while (current->next != NULL)       
        {
            current = current->next;            
        }
        current->next = newnode;
    }
    else
    {
        head = newnode;                        
    }
};

template <class T>
void LinkedList<T>::remove(int remove)          
{
    remove1 = NULL;             
    temp = head;
    current = head;
    while (current != NULL && current->add != remove)           
    {
        temp = current;                                                     
        current = current->next;                                            
    }
    if (current == NULL)                                            
    {
        std::cout << "N/A\n";
        delete remove1;                                             
    }
    else
    {
        remove1 = current;                                          
        current = current->next;                                    
        temp->next = current;                                       
        if (remove1 == head)                                        
        {
            head = head->next;                                      
            temp = NULL;
        }

        delete remove1;
    }
};

template <class T>
void LinkedList<T>::display()
{
    current = head;                                                 

    while (current != NULL)                                         
    {
        std::cout << current->number;
        current = current->next;                                
    }
};

1 个答案:

答案 0 :(得分:1)

您的程序需要全局main()功能,而不是LinkedList的静态版本。 main函数称为入口点,快速查找错误消息会告诉您。

http://en.cppreference.com/w/cpp/language/main_function

这可能有用:

int main()
{
    LinkedList<int> menu;             

    menu.insert(1);                     
    menu.insert(4);
    menu.insert(7);
    menu.insert(2);
    menu.insert(8);
    menu.display();                 
    Std::cout << "-----" << endl;
    menu.remove(2);                     
    menu.remove(1);
    menu.remove(10);
    menu.display();

    return 0;
};

目前,您在类中定义了一个完全不相关的“main”函数。这只是您的类的普通常规函数,与先前提到的int main()入口点函数无关。