gpt4 book ai didi

c++ - 迭代 BOOST_FUSION_ADAPT_ADT 结构中的元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:44 24 4
gpt4 key购买 nike

无论如何,fusion::for_each() 是否可以在 BOOST_FUSION_ADAPT_ADT 或 BOOST_FUSION_ADAPT_ASSOC_ADT 中迭代 a1 和 a2,就像使用 BOOST_FUSION_ADAPT_STRUCT 进行改编一样?

class A
{
private:
int a1_;
double a2_;

public:
void set_a1(int v) { a1_ = v; }
int get_a1() const { return a1_; }

void set_a2(double v) { a2_ = v; }
double get_a2() const { return a2_; }
};

BOOST_FUSION_ADAPT_ASSOC_ADT(
A,
(int, int, obj.get_a1(), obj.set_a1(val) )
(double, double, obj.get_a2(), obj.set_a2(val) )
)

struct Print
{
template <typename T>
void operator()( T& t ) const
{
// T is of type adt_attribute_proxy
// cout << ??
// would like to print a1 and a2 value
}
};

int main()
{
A a;
boost::fusion::for_each( a, Print() );
}

最佳答案

adt_attribute_proxy提供方法 get 来访问属性值。

struct Print
{

template <typename T>
void operator()(T& t) const
{
std::cout << t.get();
}
};

附言您的示例 BOOST_FUSION_ADAPT_ASSOC_ADT 宏中存在错误。每个元素应使用 5 个参数声明(attribute_typeNattribute_const_typeNget_exprNset_exprNkey_typeN) 也许您混淆了 BOOST_FUSION_ADAPT_ASSOC_ADT 和 BOOST_FUSION_ADAPT_ADT?

关于c++ - 迭代 BOOST_FUSION_ADAPT_ADT 结构中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com