类模板 使用多个类型参数

// pairs.cpp -- define and use a Pair template
#include <iostream>
#include <string>
template <class T1, class T2>
class Pair
{
private:
    T1 a;
    T2 b;
public:
    T1 & first();
    T2 & second();
    T1 first() const { return a; }
    T2 second() const { return b; }
    Pair(const T1 & aval, const T2 & bval) : a(aval), b(bval) { }
    Pair() {}
};

template<class T1, class T2>
T1 & Pair<T1,T2>::first()
{
    return a;
}
template<class T1, class T2>
T2 & Pair<T1,T2>::second()
{
    return b;
}

int main()
{
    using std::cout;
    using std::endl;
    using std::string;
    Pair<string, int> ratings[4] =
    {
        Pair<string, int>("The Purple Duke", 5),
   Pair<string, int>("Jake's Frisco Al Fresco", 4),
   Pair<string, int>("Mont Souffle", 5),
   Pair<string, int>("Gertie's Eats", 3)
    };
 
    int joints = sizeof(ratings) / sizeof (Pair<string, int>);
    cout << "Rating:\t Eatery\n";
    for (int i = 0; i < joints; i++)
        cout << ratings[i].second() << ":\t "
  << ratings[i].first() << endl;
    cout << "Oops! Revised rating:\n";
    ratings[3].first() = "Gertie's Fab Eats";
    ratings[3].second() = 6;
    cout << ratings[3].second() << ":\t "
  << ratings[3].first() << endl;
 
    return 0;
}

posted @ 2007-03-07 06:49  Edward Xie  阅读(673)  评论(0)    收藏  举报