gpt4 book ai didi

c++ - C++ #includes 和类型变量的设计问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:35 24 4
gpt4 key购买 nike

我会试着描述一下问题的背景,然后是一些观察。我没有具体问题;我主要是在寻求建议。

我有一些 .h 文件对应于用户的测试/演示。每个 .h 文件定义一个类对应一个测试/演示。应该注意的是,所有这些类都继承自一个共同的基础。

在我的主文件中,我需要 #include 所有这些 .h 文件并识别它们的每个类。然后,对于 n 个类,将有 n 个按钮。每个按钮在按下时都会创建它对应的类的一个新实例。释放后,它会删除它。按钮不能存储自己的实例;它们必须在按下和释放时创建和删除;绝对不能同时实例化不同类的两个实例。

这引发了一些问题(并澄清了上下文):

  1. 关于特定测试/演示的所有信息都应该在同一个地方(即测试的名称、测试的文件名和测试的类名都应该在代码的同一区域。最好是同一行. 这就是好的设计。
  2. 该类的一个关键信息是它的 C++ 名称。不幸的是,据我所知,此类标记只能写入实例化它的代码中(因此,例如,它不能存储在包含有关每个测试/演示的信息的结构中;我试过模板,但它是一个列表参数全都不同的模板)。

第 1 点和第 2 点让我做出如下形式的宏表达式:

#define TESTDEMO_DATA(MACRO)\
MACRO("<name 1 here>",class1_symbol,"<filename 1 here>")\
MACRO("<name 2 here>",class2_symbol,"<filename 2 here>")\
MACRO("<name 3 here>",class3_symbol,"<filename 3 here>")\
...

从这里开始,我可以非常简单地创建按钮(我使用 TESTDEMO_DATA 生成将创建 classn_symbol 实例的函数,然后让每个按钮调用正确的按钮)。

但现在我被卡住了:我显然不能编写一个宏来传递给 TESTDEMO_DATA,它将#include 文件名,正如我可能希望的那样,因为这将需要一个多 channel 预处理器。我也不想单独编写 #includes,因为这违反了第 1 点,尽管这是我现在能想到的最好的。

想法?

最佳答案

从脚本生成代码。

关于c++ - C++ #includes 和类型变量的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646972/

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