Dosyaya düzenli bir c struct yazmak için bazı destek füzyon öğelerini kullanmaya çalışıyorum. Bir XML dosyası, verileri yakalamak ve diğer araçlar veya el ile uyumlu hale getirmek için iyi bir yol gibi görünüyor. Neredeyse sahip olduğum gibi görünüyor ama temel bir şey eksik gibi görünüyor. Ben boost :: fusion hızlı başlangıç sayfasında ne oldukça benzer bir şey kullanıyorum: http://www.boost.org/doc/libs/1_54_0/libs/fusion/doc/html/fusion/quick_start.html. Bir yan not olarak, buraya ve destek belgelerine iyice baktım ama hiç kimse alan adına erişemiyor gibi görünüyor.Yükseltme fusion eşleme alan adı alanına erişme
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());
Diğer zamanlarda olarak aşağıdaki yapı tanımlanmış, ancak hala şans: Biliyorum
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;
hiçbir üye ilk orada şöyle
struct print_xml
{
template <typename T>
void operator()(T const& x) const
{
std::cout
<< '<' << x.first << '>'
<< x
<< "</" << x.first << '>'
;
}
};
onu kullanmak istiyorum ama alan adına erişmek için olması gerektiği gibi görünüyor! Benim x.second ile iyi çalışıyor ama sonra alan adını almak için gereken ne elde edemezsiniz kodu. Bunu başka nasıl yapabilirim? Teşekkürler!
Şaşırtıcı bir parça:/Bunun varlığından haberi yoktu. – sehe