c ++模板依赖于文件的输入
c++ templates dependent on input from file
我有一个复杂的 C++ 科学代码,它使用了多个库。
假设有 5 种不同类型的库,如线性求解器、集成工具等。对于每种库类型,都有几个不同的库做完全相同的事情,但具有不同的内部实现。事实上,对于每个库都实现了一个包装器 class,这样所有相同类型的库都具有完全相同的接口。
现在,我想把这个软件送给一个用户。我希望用户能够在代码编译后 select 他们想要使用的库。目前它是通过输入文件完成的。
唯一的问题是在主程序中对此进行编码。在对库 selection 进行编码时,我最终使用了嵌套 ifs,从而根据从文件中读取的参数明确地对库的所有可能组合进行编码。我想知道是否有一个整洁的方法来做到这一点。
您不能实现依赖于文件输入的模板,因为模板类型是在编译中解析的,而不是运行时。
做到这一点的简洁方法是通过多态性(也是优雅的方法 ;D)。
定义一个 Base class 来定义每个实现的接口,创建子 classes,每个子 classes 每个都有自己的实现,然后,(使用来自文件的输入...或不使用...你的电话)通过多态性解决使用哪种算法。
:)祝你好运。
我有一个复杂的 C++ 科学代码,它使用了多个库。 假设有 5 种不同类型的库,如线性求解器、集成工具等。对于每种库类型,都有几个不同的库做完全相同的事情,但具有不同的内部实现。事实上,对于每个库都实现了一个包装器 class,这样所有相同类型的库都具有完全相同的接口。
现在,我想把这个软件送给一个用户。我希望用户能够在代码编译后 select 他们想要使用的库。目前它是通过输入文件完成的。
唯一的问题是在主程序中对此进行编码。在对库 selection 进行编码时,我最终使用了嵌套 ifs,从而根据从文件中读取的参数明确地对库的所有可能组合进行编码。我想知道是否有一个整洁的方法来做到这一点。
您不能实现依赖于文件输入的模板,因为模板类型是在编译中解析的,而不是运行时。
做到这一点的简洁方法是通过多态性(也是优雅的方法 ;D)。
定义一个 Base class 来定义每个实现的接口,创建子 classes,每个子 classes 每个都有自己的实现,然后,(使用来自文件的输入...或不使用...你的电话)通过多态性解决使用哪种算法。
:)祝你好运。