WEB开发网
开发学院软件开发VC ATL布幔之下的秘密(3) 阅读

ATL布幔之下的秘密(3)

 2006-07-22 22:54:58 来源:WEB开发网   
核心提示: (15, 20)同样,我们也能够将一个类模板作为一个模板参数传递,ATL布幔之下的秘密(3)(4),现在让我们来编写这样一个Point类,并将其作为一个模板参数传递给Stack类模板
(15, 20)

同样,我们也能够将一个类模板作为一个模板参数传递。现在让我们来编写这样一个Point类,并将其作为一个模板参数传递给Stack类模板。

程序40.

#include <iostream>
using namespace std;
template <typename T>
class Point {
private:
 T m_x, m_y;
public:
 Point(T p_x = 0, T p_y = 0) : m_x(p_x), m_y(p_y) {
 }
 bool friend operator > (const Point<T>& lhs, const Point<T>& rhs) {
  return lhs.m_x > rhs.m_x && lhs.m_y > rhs.m_y;
 }
 friend ostream& operator << (ostream& os, const Point<T>& p) {
  return os << "(" << p.m_x << ", " << p.m_y << ")";
 }
};
template <typename T, int iSize = 10>
class Stack {
private:
 T m_pData[iSize];
 int m_iTop;
public:
 Stack() : m_iTop(0) {
 }
 void Push(T p_iData) {
  m_pData[m_iTop++] = p_iData;
 }
 T Pop() {
  return m_pData[--m_iTop];
 }
 T Top() {
  return m_pData[m_iTop];
 }
private:
 Stack(const Stack<T>&);
 Stack<T>& operator = (const Stack<T>&);
};
int main() {
 Stack<Point<int> > st;
 st.Push(Point<int>(5, 10));
 st.Push(Point<int>(15, 20));
 cout << st.Pop() << endl;
 cout << st.Pop() << endl;
 return 0;
}

程序的输出为:

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:ATL 之下 秘密

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接