我认为你需要这样的东西:
template<typename T>
struct triplet
{
T first, middle, last;
};
template<typename T>
triplet<T> make_triplet(const T &m1, const T &m2, const T &m3)
{
triplet<T> ans;
ans.first = m1;
ans.middle = m2;
ans.last = m3;
return ans;
}
使用示例:
triplet<double> aaa;
aaa = make_triplet<double>(1.,2.,3.);
cout << aaa.first << " " << aaa.middle << " " << aaa.last << endl;
triplet<bool> bbb = make_triplet<bool>(false,true,false);
cout << bbb.first << " " << bbb.middle << " " << bbb.last << endl;
我正在使用它,这足以满足我的目的......但是,如果您想要不同的类型,只需进行一些修改:
template<typename T1, typename T2, typename T3>
struct triplet
{
T1 first;
T2 middle;
T3 last;
};
template<typename T1, typename T2, typename T3>
triplet<T1,T2,T3> make_triplet(const T1 &m1, const T2 &m2, const T3 &m3)
{
triplet<T1,T2,T3> ans;
ans.first = m1;
ans.middle = m2;
ans.last = m3;
return ans;
}
用法将非常相似:
triplet<bool,string,myDouble> ccc;
ccc = make_triplet<bool,string,double>(false,"AB",3.1415);
ccc.middle = "PI";
cout << ccc.first << " " << ccc.middle << " " << ccc.last << endl;