自动 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" 之一。很可爱。
我最初在这里问这个问题:
看来我的要求被误解了。我会尽量使这一点尽可能清楚和简短:
我正在开发一个自动生成 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" 之一。很可爱。