-5

、、、などのさまざまなクラスCase0がありCase1Case2いくつかのプリプロセッサを使用してそれらを切り替えたいと考えてい#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 を使用したくありません。これはコンパイル時間に影響を与える可能性があり、プラットフォームに依存します。ここでは、プリプロセッサ ディレクティブの方が適していると思います。

4

3 に答える 3

0

次のコードが機能する必要があります。

    #ifdef CASE1
    class1
    {
    };
    #endif

    #ifdef CASE2
    class2
    {
    };
    #endif

    #ifdef CASE3
    class3
    {
    };
    #endif

そしてProject Configurationsを使用します。

于 2013-07-18T12:31:55.747 に答える