2013-10-25 10 views
6

私はC++コードを使用してVisual Studio 2010で作業しています。私は何をしようとしていることはそれが可能だが、私はこれを試してみたがわからない場合は、実行時にプリプロセッサディレクティブの値を変更..です実行時にマクロの値を変更する

somefile.h

static int mValue = 0; 
#define POO = mValue; 
... 

#if POO 0 
//define class methods 
#else 
//define class methods differently 
} 

main.cppに

POOは、クラスオブジェクトが他のメソッドの別の実装を使用するようにどのように変更できますか?それが不可能な場合、これにはもう1つのアプローチがありますか?

+5

実行時にプリプロセッサディレクティブを変更することはできません。あなたの問題に応じて、異なる派生クラスの基本クラスを使用することができます(これはあなたが私たちに示したものとは分かりません)。 – Yuushi

答えて

8

「プリプロセッサ」ディレクティブの性質について混乱しているようです。これらはコンパイラ処理の前にのみ存在します。コンパイラは、コンパイル・ステップ中にマクロ定義を削除(置換/処理)します。彼らは実行時に変更するために存在しません。それは実際にコンパイラによって処理されるc/C++コードにコンパイルするだけのミニ言語です。

ランタイムの入力に基づいてクラスを2つの異なるものにしたいと思うようです。これは設計上の問題を示している可能性があります。 2つの異なるクラスを定義することを検討することもできます(おそらく、共通の単純な基本クラスを使用して)。

関連する問題