C ++ #includes和Type Variables的设计问题

时间:2012-05-18 05:04:26

标签: c++ macros include

我会尝试稍微描述问题的上下文,然后进行一些观察。我没有具体问题;我主要是寻求建议。

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

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

这引发了一些问题(并澄清了背景):

  1. 有关特定测试/演示的所有信息应该在同一个地方(即,测试的名称,测试的文件名和测试的类名应该都在代码的相同区域。最好是同一行这只是一个很好的设计。
  2. 该类的一个关键信息是它的C ++名称。不幸的是,据我所知,这样的令牌只能写入实例化它的代码中(例如,它不能存储在包含每个测试/演示信息的结构中;我尝试过模板,但后来它就是一个列表模板的参数都有所不同。)
  3. 第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的宏,它将只包含文件名,因为我需要一个多通道预处理器。我也不想单独写#includes,因为这违反了第1点,尽管这是我现在能想到的最好的。

    想法?谢谢,
    伊恩

1 个答案:

答案 0 :(得分:0)

从脚本生成代码。