大佬教程收集整理的这篇文章主要介绍了c – 访问增强融合图字段名称,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
struct print_xml { template <typename T> void operator()(T const& X) const { std::cout << '<' << x.first << '>' << x << "</" << x.first << '>' ; } };
我想使用它如下:
BOOST_FUSION_ADAPT_STRUCT( myStructType,(double,val1) (double,val2) (char,letter) (int,number) ) myStructType saveMe = { 3.4,5.6,'g',9}; for_each(saveMe,print_xml());
其他时候我将结构定义如下,但还是没有运气:
namespace fields{ struct val1; struct val2; struct letter; struct number; } typedef fusion::map< fusion::pair<fields::val1,double>,fusion::pair<fields::val2,fusion::pair<fields::letter,char>,fusion::pair<fields::number,int> > myStructType;
我知道没有成员第一,但它真的好像应该是为了访问字段名称!代码我已经很好用X.second,但是没有完成我需要的是获取字段名称.
我该怎么办呢?
谢谢!
#include <iostream> #include <String> #include <boost/mPL/range_c.hpp> #include <boost/fusion/include/for_each.hpp> #include <boost/fusion/include/zip.hpp> #include <boost/fusion/include/at_c.hpp> #include <boost/fusion/include/adapt_struct.hpp> #include <boost/fusion/include/mpl.hpp> namespace fusion=boost::fusion; namespace mpl=boost::mpl; struct myStructType { double val1; double val2; char letter; int number; }; BOOST_FUSION_ADAPT_STRUCT( myStructType,number) ) template <typename Sequence> struct XmlFieldNamePrinter { XmlFieldNamePrinter(const Sequence& seq):seq_(seq){} const Sequence& seq_; template <typename Index> void operator() (Index idX) const { //use `Index::value` instead of `idx` if your compiler fails with it std::string field_name = fusion::extension::struct_member_name<Sequence,idx>::call(); std::cout << '<' << field_name << '>' << fusion::at<Index>(seq_) << "</" << field_name << '>' ; } }; template<typename Sequence> void printXml(Sequence const& v) { typedef mpl::range_c<unsigned,fusion::result_of::size<Sequence>::value > InDices; fusion::for_each(InDices(),XmlFieldNamePrinter<Sequence>(v)); } int main() { myStructType saveMe = { 3.4,9}; printXml(saveME); }
以上是大佬教程为你收集整理的c – 访问增强融合图字段名称全部内容,希望文章能够帮你解决c – 访问增强融合图字段名称所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。