【发布时间】:2021-04-17 03:09:30
【问题描述】:
我想构建一个 C++ 程序,一个共享内存监视器/拦截器/记录器/播放器。 基本上我想实现的那些功能都没有问题。
现在我的主要问题是我想让这个程序能够加载很多不同的 ICD 文件,所以我可以查看不同的共享内存,只需加载共享内存使用 ICD 头文件,所以我不需要包含该 ICD 文件并重新构建此程序。
示例 ICD 头文件 A (A.h):
struct StructA
{
bool btState;
float X_Pos;
float Y_Pos;
float Rotate;
};
示例 ICD 头文件 B (B.h):
struct StructB
{
int systemState;
int missionState;
};
So, when my program startup, it will show a File Selector Dialog like many others program, then user can select a Header File, when select done and write this Shared Memory used name to input field, the UI will show about this结构内容。
喜欢(当 A.h 加载时):
btState false
X_Pos 0.04568f
Y_Pos 456.556f
Rotate 25.258f
那么,我应该像文本文件一样加载这些文件,并构建一个类来进行一些字符串剪切/分析,还是使用 C++ 编译器在运行时编译这个文件?
坦克。
【问题讨论】:
-
C++ 类不能在运行时构建。它们仅存在于 C++ 源代码中,而不存在于运行时代码中。当然,您可以编写这样的代码,就像您将类构建为运行时一样,但是 C++ 语言不会在这方面为您提供任何帮助,您必须自己完成所有工作。
-
解决方案是使用一个基类,然后从它扩展。关键是您需要编写一个足够通用的基类,以捕获任何派生类可能具有的功能。
标签: c++ compilation header runtime shared-memory