首页 > 解决方案 > 函数定义和声明(.h 和 .cpp 文件)错误

问题描述

我的代码只包含我最后提到的 3 种类型的错误,首先查看这些错误,然后查看我的代码,这基本上是使用 VS Studio IDE 定义和声明链表类,我不确定我是否遇到了一些愚蠢的错误请帮助我用这个

// 定义

#ifndef LINKEDLIST_H
#define LINKEDLIST_H

template <class T>
class Node
{

public:
    T data;
    Node* next;

    Node(T val);
};

template <class T>
class Linkedlist
{
private:
    Node* head;
public:
    

    void insert_at_beg(T val);
    void insert_at_end(T val);
    void insert_at_i(T val,int i);

    void remove_at_beg();
    void remove_at_end();
    void remove_at_i(int i);

    T search(T val);

    bool isfull();
    void printlist();
};
#endif

// THIS IS DEFINITION OF FILE
#include "Linkedlist.h"
#include <iostream>
using namespace std;



// definition from Node class
template <class T>
Node::Node(T val)
    {
        data = val;
        next = NULL;
    }


// definition from linkedlist class

template <class T>
void Linkedlist::insert_at_beg(T val)
    {
        Node* ptr = new Node();
        ptr->data = val;


        if (head == NULL)
        {
            head = ptr;
            ptr->next = NULL;
        }

        else
        {
            Node* temp;
            temp = head;
            temp = temp->next;

            head = ptr;
            ptr->next = temp;
        }
    }

template <class T>
void Linkedlist::insert_at_end(T val)
    {
        Node* ptr = new Node();
        ptr->data = val;

        
        Node* temp;

        temp = head;
        while (temp->next != NULL)
        {
            temp = temp->next;
        }
        temp->next = ptr;
        ptr->next = NULL;
    }
    
template <class T>
void Linkedlist::insert_at_i(T val, int i)
    {
        Node* ptr = new Node();
        ptr->data = val;

        Node* temp = head;
        Node* prev_temp;
        int index = 0;
        while (index != i)
        {
            prev_temp = temp;
            temp = temp->next;
            index++;
        }

        prev_temp->next = ptr;
        ptr->next = temp;
    }

template <class T>
void Linkedlist::remove_at_beg()
    {
        Node* temp;
        temp = head;
        
        head = temp->next;

        free(temp);

    }

template <class T>
void Linkedlist::remove_at_end()
    {
        Node* temp;
        temp = head;

        Node* prev_temp;
        while (temp->next != NULL)
        {
            prev_temp = temp;
            temp = temp->next;
        }

        free(temp);
        prev_temp->next = NULL;
    }

template <class T>
void Linkedlist::remove_at_i(int i)
    {
        Node* temp = head;
        Node* prev_temp;
        Node* next_temp;
        
        int index = 0;
        while (index != i)
        {
            prev_temp = temp;
            temp = temp->next;
            index++;
        }

        next_temp = temp->next;

        prev_temp->next = next_temp;
        free(temp);
    }

template <class T>
T Linkedlist::search(T val)
    {
        Node* temp = head;
        while (temp->next != NULL)
        {
            if (temp->data == val)
            {
                return true;
            }
        }

        return false;
    }
template <class T>
bool Linkedlist::isfull()
    {
        
        if (head != NULL)
            return true;
        else
            return false;
    }

template <class T>
void Linkedlist::printlist()
    {
        Node* temp = head;
        while (temp->next != NULL)
        {
            cout << temp->data << "->";
        }
        cout << "NULL";
    }

/

/ 我无法弄清楚的错误,我正在使用 VISUAL STUDIO

这 3 个是唯一的错误

like in 10 15 lines I get name followed by :: must be class or namespace 
which is  a class but not sure what wrong

其他是类模板需要模板参数列表 Node::Node 无法匹配

unable to match function definition to existing declaration like Linkedlist::isfull()    // compare it with .h and .cpp file

标签: c++visual-studiofileoopfunction-declaration

解决方案


推荐阅读