我想用C写一个通用的函数++泛型函数来获取所有类型和集合在C++
template<class T>
string GetDebugString(const T& t);
从而可以得到普遍调试字符串为所有类型的调试字符串。我的问题是如何使用特征区分不同类型:
1)原始类型和字符串: 直接获取其字符串表示形式。
2)结构和类的类型: 调用它的“字符串DebugString()”方法。我会为所有类实现这个方法。该方法可能会递归调用GetDebugString。
3)指针和智能指针: 解除引用它们,并按照1)或2)
4)类别像向量,设定或地图: 遍历其所有元件,获得的调试串对于每个元件以下1 ),2)和3)并以某种格式组装它们。
我们如何用std :: enable_if做到这一点?
您可以使用SFINAE来检查您是否正在使用'DebugString'方法处理类型,并为您提及的其他所有内容重载。没有必要的特质。如果您按照这些条款进行搜索,则应该能够复制/抓取某些内容并针对特定问题寻求帮助。 – 2014-10-09 17:32:18
我可以使用C++ 11。 – yuefengz 2014-10-09 17:32:41
这可以帮助你:http://stackoverflow.com/questions/4850473/pretty-print-c-stl-containers – Chnossos 2014-10-09 17:32:54