c++ - 函数定义和声明(.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
解决方案
推荐阅读
- java - 无法在 java 8 中导入 java.util.stream
- webview - 在 webview 内部和外部打开
- r - 通过正则表达式解决缩短符号
- r - 有没有办法重新格式化以下文本文件的结构
- reactjs - ReactJs:按今天,本周,当年分组数据
- apache-flink - 如果算子的并行实例总数高于 Flink 应用程序的并行度会怎样?
- php - 带有哈希值的 url id 掩码:未配置连接 [App\User]
- sql - 选择每年销量前十的产品
- javascript - React Material TextArea 样式被破坏
- php - Laravel 短信验证 api 使用 firebase 短信而不使用 twilo 或 nexmoo