推广C++代码的有效方法(从2D计算到3D计算)

Efficient way of generalizing a C++ code (a 2D computation to 3D computation)

本文关键字:计算 2D 3D 代码 C++ 有效 方法 推广      更新时间:2023-10-16

我正在编写一个C++代码,用于进行2D和3D计算。主函数有一个参数,我可以从中判断是进行2D还是3D计算(dim=2还是dim=3)。启用/禁用基于dim的特定代码段编译的最佳选项是什么?我发现这篇文章建议使用#ifdef,所以我想定义一个宏,然后使用#ifdef

if( dim == 2 )
    #define DISABLE_3D true

我相信有更好的方法可以做到这一点,我很乐意这样做。

您必须确定它们是依赖于编译时还是依赖于运行时。#ifdef宏依赖于编译时间,因此程序将仅具有2D或3D功能。如果您需要一个在运行时同时适用于二维和三维计算的函数,则应避免使用#ifdef宏。

您可以使用C++的"函数覆盖"特性,而不是使用if (dim==2)决策。由于缺少许多细节,我不能给出一个具体的例子,但如果2D和3D数据存在差异,这可能是一个可以实现功能覆盖的提示。