0

メソッドのパラメーター用のENUMがあります。このENUMは、クラスのプライベートメンバーです。

class Method

この方法には2つのバリエーションがあります。パラメータのリストはほとんど同じです。メソッドの2番目のバリアントでは、3つのパラメーターが最初のバリアントのパラメーターのリストに追加されます。

2番目のバリアントではtrueに設定されているブール値を使用して実行したいと思います。このようなものを持つことは可能ですか?

enum EcolId {
    P1,
    P2,
    P3,

    if(m_bool)
    {
         P4,
         P5
    }
}

そうでない場合、私は何をすべきですか?

ここではENUMを使用する以外に選択肢はありません。

ありがとう

4

2 に答える 2

2

いいえ、それはできません。

あなたができること:

 enum EcolId {
     P1,
     P2,
     P3,

 #ifdef SOMETHING
     P4,
     P5
 #endif 
 }

または、テンプレートを使用することもできます。このようなもの:

enum EcolId1
{
    P1,
    P2,
    P3,
};

enum EcolId2
{
    P1,
    P2,
    P3,
    P4,
    P5,
};


template<typename T>
class Method
{
     T enumvar;
     ... 
}

...
Method<EcolId1>  limited;
Method<EcolId2>  more;     
于 2013-03-11T11:42:02.937 に答える
0

バリアントがどのように動機付けられているかによって異なります。

2つのを使用してみませんenumか?

別の方法として、未処理の値が使用されている場合、最初のバリアントでエラーを生成できます。

私を少し苛立たせているのは、拡張されるパラメータのリストについて話していることです。拡張したい1つのパラメーターの値のリストを意味していることを願っています。

于 2013-03-11T11:39:26.993 に答える