求助一下报错是什么原因
在学习c++的模版的时候,照着书上的代码输的,报错是
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Stack<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::pop(void)" (?pop@?$Stack@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@@QAEXXZ) referenced in function _main
后面还有几个类似的,比较长,百度说这种类型的错误是因为没有实现函数,但是好像都实现了。
stack1.h
#include <vector>#include <stdexcept>template <typename T>class Stack{private: std::vector<T> elems;public: void push(T const&); void pop(); T top() const; bool empty() const{return elem.empty();}};#include "stack1.h"template <typename T>void Stack<T>::push(T const& elem){ elems.push_back(elem);}template <typename T>void Stack<T>::pop(){ if(elems.empty()) throw std::out_of_range("Stack<>::pop: empty stack"); elems.pop_back();}template <typename T>T Stack<T>::top() const{ if(elems.empty()) throw std::out_of_range("Stack<>::pop: empty stack"); return elems.back();}#include "stack1.h"#include <iostream>#include <cstdlib>#include <string>using namespace std;int main(){ try { Stack<int> intStack; Stack<string> strStack; intStack.push(7); cout<<intStack.top()<<endl; strStack.push("hello"); cout << strStack.top()<<endl; strStack.pop(); strStack.pop(); } catch (exception const& ex) { cerr<<"Exception:"<<ex.what()<<endl; return EXIT_FAILURE; }}#include <vector>#include <stdexcept>template <typename T>class Stack{private: std::vector<T> elems;public: void push(T const&); void pop(); T top() const; bool empty() const{return elems.empty();}};template <typename T>void Stack<T>::push(T const& elem){ elems.push_back(elem);}template <typename T>void Stack<T>::pop(){ if(elems.empty()) throw std::out_of_range("Stack<>::pop: empty stack"); elems.pop_back();}template <typename T>T Stack<T>::top() const{ if(elems.empty()) throw std::out_of_range("Stack<>::pop: empty stack"); return elems.back();}