、、、などのさまざまなクラスCase0
がありCase1
、Case2
いくつかのプリプロセッサを使用してそれらを切り替えたいと考えてい#define
ます。それらはすべて同じインターフェイス (同じパブリック メソッド) を共有しており、OOP を使用することもできますが、プリプロセッサ ディレクティブを使用したいと考えています。
今のところ、次のようなものがあります。
#define CASECLASS Case0
//#define CASECLASS Case1
//#define CASECLASS Case2
#define CASE 0
class Main {
public:
CASECLASS *mycase;
Main() {
mycase = new CASECLASS();
if(CASE==0) {
mycase->foo();
// something else
}
if(CASE==1) {
mycase->foo();
// something else
}
}
}
このように、切り替える必要があるたびに、定義CASECLASS
とを変更する必要がありCASE
ます。よりクリーンな方法があるかどうか疑問に思っています。
編集:
異なるクラスは異なるライブラリを使用するため、OOP を使用したくありません。これはコンパイル時間に影響を与える可能性があり、プラットフォームに依存します。ここでは、プリプロセッサ ディレクティブの方が適していると思います。