1

我将尝试稍微描述一下问题的背景,然后进行一些观察。我没有具体的问题;我只是在寻找建议,主要是。

我有许多 .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 文件名,就像我可能喜欢的那样,因为这需要一个多通道预处理器。我也不想单独编写#includes,因为这违反了第1点,尽管这是我现在能想到的最好的。

想法?谢谢,
伊恩

4

1 回答 1

0

从脚本生成代码。  

于 2012-05-18T05:50:55.623 回答