我一直在尝试使用一些boost fusion的东西来将普通的c结构体写入文件。 XML文件似乎是捕获数据并使其与其他工具兼容或手动编辑的好方法。 看起来我已经接近成功,但似乎缺少了一些基本的东西。 我正在使用与boost :: fusion快速启动页面上相似的东西:http://www.boost.org/doc/libs/1_54_0/libs/fusion/doc/html/fusion/quick_start.html。 顺便说一句,我已经彻底查看了这里和boost的文档,但似乎没有人访问字段名。
我希望按照以下方式使用它:
有时我定义结构体如下,但仍然没有成功:
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, double>,
fusion::pair<fields::letter, char>,
fusion::pair<fields::number, int> > myStructType;
我知道没有成员函数first,但是为了访问字段名,似乎应该有一个。我的代码使用x.second没有问题,但无法实现我需要的获取字段名的功能。那么还有其他方法可以实现吗?