リストを作成して完全に機能しましたが、テンプレートを使用して書き直す必要があります。これを実行しました。しかし、コードをコンパイルしようとすると、リンカーエラーが発生します。このコードを手伝ってもらえますか?どんな助けでも大歓迎です!これはList.hです
#pragma once
#include <cstdlib>
template <class T>
class List
{
public:
struct Node
{
T data;
Node *next, *prev;
Node();
Node(T &smth);
~Node();
};
Node *head;
Node *tail;
public:
List();
~List();
void add(T &d);
void del(Node *);
};
List.cpp
#include "List.h"
template <class T>
List<T>::List()
{
}
template <class T>
List<T>::~List()
{
Node*n;
while (head != nullptr)
{
n = head->prev;
delete head;
head = n;
}
}
template <class T>
void List<T>::add(T &d)
{
Node *n = new Node(d);
n->prev = head;
n->next = nullptr;
if (head!=nullptr)
head->next = n;
if(head == nullptr){
head = n;
tail = head;
} else
head = n;
}
template <class T>
void List<T>::del(Node *node)
{
if (head == node)
head = node->prev;
if (tail == node)
tail = node->next;
if (node->next != nullptr)
node->next->prev = node->prev;
if (node->prev != nullptr)
node->prev->next = node->next;
delete node;
}
template <class T>
List<T>::Node::Node():data(),next(nullptr),prev(nullptr){}
template <class T>
List<T>::Node::Node(T &smth):data(smth),next(nullptr),prev(nullptr){}
template <class T>
List<T>::Node::~Node(){
data.~Word();
next = nullptr;
prev = nullptr;
}
およびmain.cpp
#include <List.h>
#include <iostream>
using namespace std;
int main()
{
int a;
List<int> my;
cin >> a;
my.add(a);
cin >> a;
my.add(a);
cin >> a;
my.add(a);
}
そして私はこれらのエラーを受け取ります:
エラー1エラーLNK2019:未解決の外部シンボル "public:__thiscall> List :: List(void)"(?? 0?$ List @ H @@ QAE @ XZ)関数_main> c:\ Users \ lapchenko \document\で参照されていますVisual Studio> 2012 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Source.obj
エラー2エラーLNK2019:未解決の外部シンボル "public:__thiscall> List ::〜List(void)"(?? 1?$ List @ H @@ QAE @ XZ)関数_main> c:\ Users \ lapchenko\documentsで参照\ visual studio> 2012 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Source.obj
エラー3エラーLNK2019:未解決の外部シンボル "public:void __thiscall> List :: add(int&)"(?add @?$ List @ H @@ QAEXAAH @ Z)関数_main> c:\ Users \lapchenko\で参照document \ visual studio> 2012 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Source.obj
エラー4エラーLNK1120:3つの未解決の外部c:\ users \ lapchenko \ document \ visual> studio 2012 \ Projects \ ConsoleApplication1 \ Debug \ ConsoleApplication1.exe 1