c ++模板依赖于来自文件的输入

时间:2015-04-01 15:31:07

标签: c++ templates io

我有一个复杂的c ++科学代码,它使用多个库。 想象一下,有5种不同类型的库,如线性求解器,集成工具等。对于每种库类型,有几个不同的库完全相同,但具有不同的内部实现。实际上,对于每个库都实现了一个包装类,这样所有相同类型的库都具有完全相同的接口。

现在,我想将此软件提供给用户。我希望用户能够在代码编译完成后选择要使用的库。目前,它是通过输入文件完成的。

唯一的问题是在主程序中编码。当编码库选择时,我最终使用嵌套ifs,因此显式地编码每个可能的库组合,条件是从文件读取的参数。我想知道是否有一个整洁的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

您无法实现依赖于文件输入的模板,因为模板类型在编译时解析,而不是运行时。

这样做的整洁方式是多态性(也是优雅的方式; D)。

定义一个Base类,为每个实现定义接口,用它自己的实现创建Children类,然后,(使用来自文件的输入......或不...你的调用)解析使用哪个算法通过多态性。

:)祝你好运。