C++ 有没有办法在编译时计算类的成员变量?

C++ 有没有办法在编译时计算类的成员变量?,c++,macros,metaprogramming,C++,Macros,Metaprogramming,我想做的是检查类的成员变量计数,因为一些新手可能会编写太多的成员变量而无法读取。有什么办法得到它吗 我们确实做了代码检查,但是一个静态断言(GET\u MEM\u VAR\u COUNT(ClassA)

我想做的是检查类的成员变量计数,因为一些新手可能会编写太多的成员变量而无法读取。有什么办法得到它吗


我们确实做了代码检查,但是一个
静态断言(GET\u MEM\u VAR\u COUNT(ClassA)<10)
可能更直接、更清晰。

在我们得到反射之前,您必须使用另一个工具来检查类中的成员数量

我们现在有一些粗略的方法来进行反思,但有很多局限性。如果您只有一个数据结构,那么您可以使用Boost Fusion来定义您的类,以便可以根据其大小进行断言,例如:

#include <string>

#include <boost/fusion/include/define_struct.hpp>
#include "boost/mpl/size.hpp"

BOOST_FUSION_DEFINE_STRUCT(
    (my_namespace), my_class,
    (std::string, member1)
    (int, member2)
    (int, member3)
    (double, member4)
//Uncomment me to trigger assert  (double, member5)
)

static_assert(boost::mpl::size<my_namespace::my_class>::type::value < 5, "Classes must have fewer than 5 members");
#包括
#包括
#包括“boost/mpl/size.hpp”
BOOST\u FUSION\u DEFINE\u STRUCT(
(我的_名称空间)、我的_类、,
(标准::字符串,成员1)
(国际,成员2)
(国际,成员3)
(双重,成员4)
//取消对我的注释以触发断言(double,member5)
)
静态断言(boost::mpl::size::type::value<5,“类必须少于5个成员”);

不幸的是,反射还没有出现,所以你需要另一个工具来操作你的代码。这种类型的规则总是会让你不知所措。
struct ClassA{struct first_ten{inta,b,c,d,e,f,g,h,i,j;};struct next_ten{…}
要有创意@波杰,附庸的附庸不是我的附庸。