如何设计一个C ++程序以允许在运行时导入功能?
今天,我想问您一个有关C ++实现特定软件体系结构功能的问题。 当然,我使用了搜索但是没有找到任何直接链接的答案。 基本上,我的目标是建立一个程序,使用户可以对任意组成的物理系统(例如驾驶汽车)进行建模和仿真。我假设有一个物理模型库(类中的函数)。每个函数可以具有一些输入,并根据基础的物理描述返回一些输出,例如,内燃机模型,空气阻力模型,车轮模型等。 现在,该想法是为用户提供一个框架,该框架允许他根据自己的需求来组合任何功能,即映射任何身体行为。该框架应提供功能,以连接不同功能的输出和输入。因此,该框架提供了一个容器类。我称它为COMPONENT,它可以容纳一个或多个模型对象(FUNCTION)。这些容器还可以容纳其他组件(参见复合模式)以及功能参数之间的连接(CONNECTOR)。此外,组件类提供了一些通用的数字功能,例如数学求解器等。 功能的组合应在运行时完成。在第一个实例中,用户应该能够通过导入定义合成结构的XML来建立合成。后来,人们可能会想到添加GUI。 为了使您更好地理解,这里是一个非常简化的示例: <COMPONENT name="Main"> <COMPONENT name="A"> <FUNCTION name="A1" path="lib/functionA1" /> </COMPONENT> <COMPONENT name="B"> <FUNCTION name="B1" path="lib/functionB1" /> <FUNCTION name="B2" path="lib/functionB2" /> </COMPONENT> <CONNECTIONS> <CONNECTOR source="A1" target="B1" /> <CONNECTOR source="B1" target="B2" /> </CONNECTIONS> </COMPONENT> 不必要深入研究框架的功能,因为我的问题更为普遍。编译框架代码/程序时,物理问题描述以及用户定义的功能未知。当用户选择功能(通过XML或以后通过GUI)时,框架应读取功能信息,即应获取输入和输出参数的信息,以便为用户提供互连功能的选项。 我知道反射的原理,并且我知道C ++不提供此功能。但是,我确信经常需要“在运行时构建对象”的概念。我应该如何在C ++中设置软件体系结构以实现我的目标?C ++是正确的语言吗?我忽略了什么? 提前致谢! 干杯,奥利弗