开发者社区> 问答> 正文

c++类模板,调用结构体模板出错!!?报错

c++类模板,调用结构体模板出错!!

#ifndef _LIST_H_
#define _LIST_H_
template <typename T>
struct Num {
    T num;
    Num *next;
};
template <typename T>
class List {
private:
    Num<T>* pHead;
public:
    List();
    int count();
    void create(T *a, int n);
    void list_();
    void add(T key, int n);
    void Swapat(int a, int b);
    void Swapnum(T num1, T num2);
    int& at(int n);
    void Sort();
    void del(int n);
    void delTheSame();

};
#endif

图片说明
Severity Code Description Project File Line
Error LNK1120 3 unresolved externals Test C:\Users\Sar.Kerson\Desktop\Test1\Test\Debug\Test.exe 1
Severity Code Description Project File Line
Error LNK2019 unresolved external symbol "public: __thiscall List::List(void)" (??0?$List@H @@QAE@XZ) referenced in function main Test C:\Users\Sar.Kerson\Desktop\Test1\Test\Test\main.obj 1
Severity Code Description Project File Line
Error LNK2019 unresolved external symbol "public: void __thiscall List::create(int *,int)" (?create@?$List@H @@QAEXPAHH@Z) referenced in function _main Test C:\Users\Sar.Kerson\Desktop\Test1\Test\Test\main.obj 1
Severity Code Description Project File Line
Error LNK2019 unresolved external symbol "public: void __thiscall List::list
(void)" (?list_@?$List@H@@QAEXXZ) referenced in function _main Test C:\Users\Sar.Kerson\Desktop\Test1\Test\Test\main.obj 1

求助大侠这是怎么回事?!(以下为几个报错函数的实现)

template <typename T>
List<T>::List() {
    pHead = NULL;
}
template <typename T>
void List<T>::create(T *a, int n) {
    Num<T> *pTail = NULL;
    for (int i = 0; i < n; ++i) {
        Num<T> *t = new Num<T>;
        t->num = a[i];
        t->next = NULL;
        if (pHead == NULL) {
            pHead = t;
            pTail = pHead;
        }
        else {
            pTail->next = t;
            pTail = t;
        }
    }
}
template <typename T>
void List<T>::list_() {
    Num<T> *t = pHead;
    while (t != NULL) {
        cout << t->num << " ";
        t = t->next;
    }
    cout << endl;
}

展开
收起
爱吃鱼的程序员 2020-06-09 13:30:48 699 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    <spanstyle="color:#333333;font-family:'MicrosoftYaHei';font-size:14px;line-height:24px;background-color:#F8FEEE;">把实现和类定义放在同一个文件里(#include实现或者直接写在一个文件里),模板和内联一样,分开放的话链接的时候模板没法实例化

    2020-06-09 13:31:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载