我有一个复杂的c ++科学代码,它使用多个库。 想象一下,有5种不同类型的库,如线性求解器,集成工具等。对于每种库类型,有几个不同的库完全相同,但具有不同的内部实现。实际上,对于每个库都实现了一个包装类,这样所有相同类型的库都具有完全相同的接口。
现在,我想将此软件提供给用户。我希望用户能够在代码编译完成后选择要使用的库。目前,它是通过输入文件完成的。
唯一的问题是在主程序中编码。当编码库选择时,我最终使用嵌套ifs,因此显式地编码每个可能的库组合,条件是从文件读取的参数。我想知道是否有一个整洁的方法来做到这一点。
答案 0 :(得分:2)
您无法实现依赖于文件输入的模板,因为模板类型在编译时解析,而不是运行时。
这样做的整洁方式是多态性(也是优雅的方式; D)。
定义一个Base类,为每个实现定义接口,用它自己的实现创建Children类,然后,(使用来自文件的输入......或不...你的调用)解析使用哪个算法通过多态性。
:)祝你好运。