我正在实现一个具有不同代码路径的应用程序,该应用程序应在启动时选择一次,然后为该执行永久修复 - 例如,选择 D3D11 或 D3D9 渲染路径。
显然我不想复制我所有的其他代码。
运行时继承(无虚拟继承)是一个公平的解决方案吗?我不想在很久以前修复类型时浪费大量性能进行虚拟查找。不仅如此,还让我担心无法内联函数以及它是否会影响 RVO 和 NRVO 等。是不是我太在意这个了?
最佳答案
我决定因为路径的数量最少,所以我将它们编译为 DLL 并加载例如D3D9Main(),它将使用预处理器编译以在编译时选择类型。比使用模板更容易,比使用继承更快/更容易。
关于c++11 - 单独的一次性代码路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526679/