gpt4 book ai didi

用于在编译时确定成员数量的 C++ 宏/元程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:47 27 4
gpt4 key购买 nike

我正在开发一个具有基于消息/异步代理类架构的应用程序。将有几十种不同的消息类型,每种都由 C++ 类型表示。

class message_a
{
long long identifier;
double some_value;
class something_else;
...//many more data members
}

是否可以编写允许在编译时计算类中数据成员数量的宏/元程序?

//例如:

class message_b
{
long long identifier;
char foobar;
}


bitset<message_b::count_members> thebits;

我不熟悉 C++ 元编程,但是 boost::mpl::vector 可以让我完成这种类型的计算吗?

最佳答案

正如其他人已经建议的那样,您需要 Boost.Fusion及其 BOOST_FUSION_DEFINE_STRUCT .您需要使用未使用但简单的语法定义一次结构。作为结果,您会收到所需的 count_members(通常命名为 size)并且比这更灵活。

你的例子:

定义:

BOOST_FUSION_DEFINE_STRUCT(
(), message_a,
(long long, identifier),
(double, some_value)
)

用法:

message_a a;
size_t count_members = message_a::size;

关于用于在编译时确定成员数量的 C++ 宏/元程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844605/

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