التكرار من خلال أعضاء الهيكل والطبقة
يوفر C آليات مختلفة للتكرار من خلال أعضاء الهياكل والفئات. ولتحقيق ذلك، يمكنك استخدام عدة تقنيات.
تعريف الهيكل باستخدام ماكرو:
أحد الأساليب هو استخدام الماكرو القابل للانعكاس، كما هو موضح في المثال التالي :
struct A
{
REFLECTABLE
(
(int) a,
(int) b,
(int) c
)
};
باستخدام هذا الماكرو، يمكنك التكرار بسهولة على الحقول وطباعة قيمها على النحو التالي:
struct print_visitor
{
template
void operator()(FieldData f)
{
std::cout
void print_fields(T & x)
{
visit_each(x, print_visitor());
}
A x;
print_fields(x);
تكييف الهيكل كتسلسل اندماجي:
هناك خيار آخر وهو تكييف الهيكل كتسلسل Boost.Fusion. خذ بعين الاعتبار المثال التالي:
struct A
{
int a;
int b;
int c;
};
BOOST_FUSION_ADAPT_STRUCT
(
A,
(int, a)
(int, b)
(int, c)
)
مع هذا التعديل، يمكنك التكرار على الحقول باستخدام الكود التالي:
struct print_visitor
{
template
void operator()(Index, C & c)
{
std::cout ::call()
(c)
void print_fields(C & c)
{
typedef boost::mpl::range_c::type::value> range;
boost::mpl::for_each(boost::bind(print_visitor(), boost::ref(c), _1));
}
تسمح لك هذه التقنيات بالتكرار بشكل فعال من خلال أعضاء البنية والفصل في لغة C .
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3