//main.cpp
#include <iostream>
#include "class.h"
using namespace std;
void testStack(Stack& stack){
for(int i = 1; i < 5; i++)
stack.push(i);
for(int i = 0; i < 4; i++){
cout << stack.top() << "\n";
stack.pop();
}
}
int main(int argc, char** argv) {
VectorStack stack;
testStack(stack);
return EXIT_SUCCESS;
}
//class.h
#ifndef class_h
#define class_h
#include <vector>
using namespace std;
class Stack{
public:
virtual ~Stack(){}
virtual void push(int i) = 0;
virtual void pop() = 0;
virtual int top() = 0;
virtual bool empty() = 0;
};
class VectorStack:public Stack{
private:
std::vector<int> m_data;
public:
bool empty(){
return (int)m_data.size() == 0;
}
void push(int i){
m_data.push_back(i);
}
void pop(){
if(!empty())
m_data.pop_back();
}
int top(){
return !empty() ? m_data[m_data.size() - 1] : INT_MIN;
}
};
#endif
Debug经验:类的定义要写在头文件里,不能写在头文件外面 。