首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板种的参数可以恰是pair的两参数吗

2013-03-25 
模板类的参数可以恰是pair的两参数吗?本人欲实现一个模板类,类内属性为pair,而pair的两参数恰为模板类参数

模板类的参数可以恰是pair的两参数吗?
本人欲实现一个模板类,类内属性为pair,而pair的两参数恰为模板类参数

///////// MyPair.h ////////////////////////////////////
template<class f_type, class s_type> class MyPair
{
public:
pair<f_type, s_type> get();

private:
pair<f_type, s_type> m_ele;
}

///////////// MyPair.cpp //////////////////////////
pair<class f_type, class s_type> MyPair<class f_type, class s_type>::get()
{
    return m_ele;
}

编译无法通过,请问:
1. pair本身就是模板类,若像这里这样用,可行吗?
2. 若可行,应该怎样写? c++ template?class pair 模板类
[解决办法]

引用:
本人欲实现一个模板类,类内属性为pair,而pair的两参数恰为模板类参数

///////// MyPair.h ////////////////////////////////////
template<class f_type, class s_type> class MyPair
{
public:
pair<f_type, s_type> get()……


#include <utility>
using namespace std;

template<class f_type, class s_type>
class MyPair
{
public:
    typedef std::pair<f_type, s_type> pair_type;

    pair_type get()
    {
        return m_ele;
    }

private:
    pair_type m_ele;
};

// 如果要放在类定义之外,则需要像这么写
template <class f_type, class s_type>
typename MyPair<f_type, s_type>::pair_type MyPair<f_type, s_type>::get()
{
    return m_ele;
}

如果不定义嵌套类型,那么get()定义是这么写的:

template <class f_type, class s_type>
std::pair<f_type, s_type> MyPair<f_type, s_type>::get()
{
    return m_ele;
}

热点排行