関数の中で#if #elif #endif を使いたいのですが、理解できません
Posted: 2013年4月20日(土) 21:57
main内で
Func(1);
と実行したとします。Func関数は下に書きます。
Func関数の中で、引数に応じて異なるクラスを同じ変数名で作成したいのですが、
単純なif文やswitch case文ではローカル変数になってしまい、その外では使えません。
#if文で書こうとしたのですが、引数アリでも無しでも何故かClassAの文、つまり
#if (num == 0)
にしかいけません。
これの理由と、解決策が知りたいです。
よろしくお願いします。
Func(1);
と実行したとします。Func関数は下に書きます。
Func関数の中で、引数に応じて異なるクラスを同じ変数名で作成したいのですが、
単純なif文やswitch case文ではローカル変数になってしまい、その外では使えません。
#if文で書こうとしたのですが、引数アリでも無しでも何故かClassAの文、つまり
#if (num == 0)
にしかいけません。
void Func(int num = 2) {
#if (num == 0)
ClassA maker();
#elif (num == 1)
ClassB maker();
#elif (num == 2)
ClassC maker();
#else
ClassD maker()
#endif
maker.create();
}
よろしくお願いします。