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

Design Issue for C++ #includes and Type Variables

本文关键字:问题 类型变量 #includes C++      更新时间:2023-10-16

我将尝试描述一下问题的上下文,然后是一些观察结果。 我没有具体问题;我只是在寻找建议,主要是。

我有许多.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 点,尽管这是我目前能想到的最好的。

想法?

从脚本生成代码。