|
|
1
6
如果它们都具有相同的类型,则可以使用如下内容:
|
|
|
2
4
宏的死亡。
|
|
3
2
我可以想出两种解决办法。
通过使用宏和修改结构定义,您可以使用此优秀答案中描述的技术,而无需单独声明映射。
然后#包括两次。在第一次包括之前:
在#包括第二次之前:
如果在您的环境中禁止使用宏,您可以使用任何您想要的外部工具(Perl、Python的 Cog
虽然C++没有直接实现反射或内省,但附加库是可用的。我用过 ROOT's Reflex |
|
|
4
1
如果您不愿意将结构更改为其他内容,那么您真的没有选择的余地——您将需要一个大的If语句来告诉您正在处理哪个字段。您可以使用宏隐藏它(并使其更易于编写),但它的结构是相同的,您将不得不处理它。 下面是一个如何编写宏的示例—它确实简化了使用,但无论如何它都不是“短”的。
这是IF_FIELD_SET行转换成的预处理器输出:
|
|
|
5
1
该界面并不真正让我满意,因此我会提出一个替代方案:
现在的挑战是
注意使用
当然,这里的部分都是关于自动化的! 和宏中的自动化一样。
用法如下:
|
|
6
0
|
|
|
7
0
如果您愿意从一种结构更改为另一种数据类型,那么您有一些不同的选择。 如果所有字段都是同一类型,只需使用STL映射即可:
如果它们属于不同的类型,则在将它们从结构中取出时,可以继续转换这些值:
您可以将get和转换封装在特定于字段的宏中,以使其更易于编写。
这样做的缺点是看起来不太像结构元素访问。 您可以尝试将MyType设置为类,并对每个字段使用单独的函数。这至少允许您在每个字段中获得不同的类型,但您仍然需要有一大块ifs才能进行设置。当然,由于可以将其放入对象中,因此使用起来会更方便。当然,您已经将结构字段访问转换为对象方法调用。不过,它很容易使用,这可能会给你买些东西。
|
|
|
8
0
有没有任何理由说明字典/地图不起作用?您可以散列字符串以加快查找速度。 |
|
|
Bananach · Python:修改调用范围中的变量绑定 8 年前 |
|
|
Ray Toal · 检查时未显示Ruby异常对象中的自定义字段 9 年前 |
|
|
Bacon · 如果给定实例,我可以检查react组件类的proptype吗? 10 年前 |
|
|
Rob · 获取Swift中泛型类型的名称(字符串) 11 年前 |
|
|
dom0 · 正在获取包含类的方法 12 年前 |