模板类的参数可以恰是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 模板类
[解决办法]
#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;
}
template <class f_type, class s_type>
std::pair<f_type, s_type> MyPair<f_type, s_type>::get()
{
return m_ele;
}