我有一个list_sorter类,它获取T类型列表并对其进行排序。 有我的问题:它在一个cpp文件中工作。当我尝试将其分解为头文件和另一个cpp文件时,我得到对`list_sorter :: list_sorter(std :: __ cxx11 :: list>)'的未定义引用。 我已经阅读了很多例子,但无法解决这个问题。
有人可以帮助我,我做错了什么?我应该改变什么? 请查看我的文件和代码:
listsort.h:
#ifndef listsort
#define listsort
#include<list>
template <typename T>
class list_sorter{
private:
std::list<T> adat;
public:
list_sorter(std::list<T> be);
void add(std::list<T> uj);
void print();
};
#endif
list_sorter.cpp:
#include<list>
#include"listsort.h"
template <typename T>
class list_sorter{
private:
std::list<T> adat;
public:
list_sorter(std::list<T> be): adat(be) { adat.sort();}
void add(std::list<T> uj){
for(auto a:uj) adat.push_back(a);
adat.sort();
}
void print(){for(auto a:adat) cout<<a<<" ";}
};
try.cpp:
#include"listsort.h"
#include<iostream>
#include<list>
using namespace std;
int main(){
list<int> tombocske;
tombocske.push_back(70);
tombocske.push_back(7);
tombocske.push_back(2);
tombocske.push_back(12);
list_sorter<int> rendezo(tombocske);
rendezo.print(); cout<<endl<<endl;
list<int> tili;
tili.push_back(45);
tili.push_back(1);
tili.push_back(32);
tili.push_back(7);
rendezo.add(tili);
rendezo.print();
list<string> tali;
tali.push_back("gyozo");
tali.push_back("kave");
tali.push_back("alma");
tali.push_back("pipa");
list_sorter<string> rendezo2(tali);
rendezo2.print();
}