c++ - 有没有办法在编译时计算类的成员变量?
问题描述
我想要做的是检查一个类的成员变量计数,因为一些新手可能会写太多的成员变量来读取。有什么方法可以得到吗?
我们确实进行了代码审查,但static_assert(GET_MEM_VAR_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");
演示
推荐阅读
- mysql - 无法使用更改表查询添加外键
- swift - 应用程序仍处于开发模式...Facebook - 测试用户无法使用电子邮件登录
- ios - 如何在 Xcode 模拟器上运行 Tweakbox 应用程序
- javascript - 制作我自己的模块与使用 em++ 生成的模块
- tibco - Tibco BW Container Edition Eclipse 界面
- php - 使用下载属性在 href 中下载图像,但在其他服务器上无法使用图像 url
- roku - 使用明亮的脚本单击保存按钮后重定向到主页?
- r - 如何在大数据帧中快速转换不同的时间格式?
- laravel-5.2 - 结帐时 Paytm 显示错误:此 MID 在我们的暂存环境中不可用
- elasticsearch - 关键字和数字数据类型如何存储在弹性搜索中?它存储在倒排索引中吗?