自动 Class 发电机

Auto Class Generator

我最初在这里问这个问题:

看来我的要求被误解了。我会尽量使这一点尽可能清楚和简短:


我正在开发一个自动生成 c++ class 的解析器,如果头文件和 cpp 文件的名称存在,解析器将分别写出这些文件。如果省略它们,那么解析器将不会写入任何文件,它将根据从文件中提取的信息自动生成 class。

我不知道该怎么做:假设我的 class 的标识符存储在 std::string 中,我如何提取字符串中的文本以将其用作 class的名字。例如:

{ 
    std::string className( "Foo" );

    // parser writing class in code
    class className { ....

} 

如果能做到,我也不知道该怎么做。正如我在上一个问题中所述,我更愿意远离 macros 但不介意在需要时使用 templates 或其他一些机制。


结论

阅读下面的评论和提供的答案后;我最初没有提到的假设实际上被证明是正确的。这是不可能的。我对此表示怀疑,但只是想确认一下。所以这确实让我不得不写出文件以便在 运行 时间创建所需的头文件和/或源文件。

你不能。

C++ 程序无法修改自身。

如果您想 auto-generate C++ 代码,请将其作为构建过程中的 pre-compilation 步骤。

我自己有一个很好的 Python 脚本生成大量 C++ 类(及其随附的样板),每个样板代表第三方定义的几个 "message types" 之一。很可爱。