2

コマンドラインで指定した値に制限を設定したい。そして、この範囲がデフォルト値のように説明内に自動的に出力されるとよいでしょう。

po::valueまた、独自の型を作成し、列挙型の特殊化を行う方法があれば興味深いです。

例えば

enum percent
{
   percent0,
   percent10,
   percent20,
   percent30,
   percent40,
   ...
   percent100
};

po::value<percent>() <-- gives compile time error

アップデート

value_semanticデフォルト値または必須フラグに対して行われるように、許可された値に関する情報をオブジェクトに追加したいと思います。

クラスがポリモーフィックで拡張できることに気づいたtyped_valueので、新しいクラスを作成したい

class range_int : public po::typed_value<int> {}

後で説明オプションを反復するときにdynamic_cast<>、値がrange_intであるかどうかを確認できますが、キャストが必要なためこのソリューションは好きではありませんが、基本インターフェイスに仮想関数を追加する方法はありません.

これの目的は、プログラム オプションを拡張することです。プログラム オプションを解析しやすい形式 (XML など) で出力する別の記述出力関数を作成する必要があります。また、一部の値に範囲を追加する必要があるため、この情報をプログラム オプションに保存する必要があります。

助言がありますか?

4

1 に答える 1

2

カスタムタイプでカスタムバリデーターを使用して、情報を保持することができます。提供されている例は自明です

于 2013-10-30T15:28:34.437 に答える