//stack.h
#include <vector>
using namespace std;
template<class T>
class Stack{
private:
int maxsize;
int top;
vector<T> vec;
public:
Stack(int ms = 0);
};
//stack.cpp
#include "stack.h"
template<class T>
Stack<T>::
Stack(int ms):maxsize(ms){
cout<<"get it"<<endl;
}
//main.cpp
<pre name="code" class="cpp">#include <iostream>
#include "stack.cpp"
using namespace std;
int main()
{
Stack<int> s(2);
Stack<int> s1;
return 0;
}
采取上述方法定義的stack類構造函數可用。
當 stack.h 中構造函數定義更改為:
Stack(int);
同時,stack.cpp中實作改為:
Stack(int ms = 0):maxsize(ms){}時,報錯。
将 stack.h 中構造函數定義更改為:
Stack(int ms = 0):maxsize(ms), top(-1);
stack.cpp 中實作改為:
Stack(int ms){...}
報錯