SarKerson
SarKerson
采纳率50%
2016-07-02 06:35

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;
}



  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • QiaXi Valtava 5年前

    把实现和类定义放在同一个文件里(#include实现或者直接写在一个文件里),模板和内联一样,分开放的话链接的时候模板没法实例化

    点赞 评论 复制链接分享