我从haskell和python转向C++,这两种语言都有内置的方法将数据类型转换为字符串。
例如,在Haskell中,有多态函数
我想在C++中创建一些类似的模板函数。
例如,我们可以将
这将把所有
我的问题是:如果我想创建一个多态的
例如,在Haskell中,有多态函数
show
。我想在C++中创建一些类似的模板函数。
例如,我们可以将
vector<int>
转换为字符串,如下所示。string toString(vector<int> v)
{
ostringstream o;
for (int elem: v)
o << elem << " ";
return o.str()
}
这将把所有
int
的字符串表示都放在一行上。现在,如果我想以同样的方式转换一个vector<vector<int> >
,该怎么办?string toString(vector<vector<int> > v)
{
ostringstream o;
for (auto elem : v)
{
o << toString(elem) << "\n";
}
}
我的问题是:如果我想创建一个多态的
toString
,它可以与vector<class A>
和vector<vector<class A>
一起使用,该怎么办?我应该添加一些功能来将类型class A
转换为std::string
吗?我只需要提供至少一个专门为该类型的toString
的特化吗?模板机制会自动解决所有这些吗?还是已经有代码可以做到这一点了?
T
替换int
,也就是将这两个函数模板化,那应该就可以了。 - cigientoString
。 - JaMiT