2016-02-26 2 views
1

У меня есть унаследованная структура, которая определяется таким образом:Адаптация определения/включают генерируемую-структуру для повышения :: фьюжн

// file:MyStructure_def.h 
STRUCT_BEGIN 
STRUCT_FIELD(int,x) 
STRUCT_END 
// EOF 

// file: MyStructure.h 
#define STRUCT_BEGIN struct MyStructure{ 
#define STRUCT_FIELD(a,b) a b; 
#define STRUCT_END }; 
#include "MyStructure_def.h" 
// EOF 

Можно ли адаптировать такую ​​генерируемую-структуру для увеличения :: слияние с BOOST_FUSION_ADAPT_STRUCT или любой другой макрос без переименовать все поля в структуре?

ответ

0

Как насчет

#include <boost/fusion/adapted/struct.hpp> 

BOOST_FUSION_ADAPT_STRUCT(MyStructure,a) 

Для старых компиляторов/версий наддува:

BOOST_FUSION_ADAPT_STRUCT(MyStructure,(a,b)) 

Посмотрите также на http://www.boost.org/doc/libs/1_60_0/libs/fusion/doc/html/fusion/adapted/define_struct.html, который бы сделать свой собственный макрос излишним.

#define NONS 
BOOST_FUSION_DEFINE_STRUCT(
    (NONS), MyStructure, 
    (a, b)) 

который определяет структуру/а также/адаптирует его

+0

я представил только siplified пример. Я не хотел бы повторно вводить поля в структуре вручную (он содержит сотни полей и периодически меняются), поэтому я хотел бы расширить макросы STRUCT_BEGIN и другие, чтобы добиться адаптации. – nkdm

+0

Я бы использовал свои функции текстового редактора, чтобы быстро преобразовать его в версию BOOST_FUSION_DEFINE_STRUCT. Это будет секундой работы, и я не требую, чтобы я вообще что-то перепечатывал. – sehe