相关疑难解决方法(0)

模板参数,#define和代码重复

我有很多像这样的代码:

#define WITH_FEATURE_X

struct A {
#ifdef WITH_FEATURE_X
  // ... declare some variables Y
#endif
  void f ();
};

void A::f () {
  // ... do something
#ifdef WITH_FEATURE_X
  // ... do something and use Y
#else
  // ... do something else
#endif
  // ... do something
}
Run Code Online (Sandbox Code Playgroud)

我想用模板参数替换#defines:

template < int WITH_FEATURE_X > // can be 0 or 1
struct A;
Run Code Online (Sandbox Code Playgroud)

但我不想为A <0> :: f()和A <1> :: f()几乎复制A :: f()的整个代码,只是为了依赖于参数的几行.我也不想调用函数而不是之前的#ifdefs.什么是常见的解决方案?

c++ templates code-duplication

7
推荐指数
1
解决办法
1815
查看次数

标签 统计

c++ ×1

code-duplication ×1

templates ×1