8

おそらく矛盾した質問です: ratio<,>は、定義上、コンパイル時の定数です。

ただし、メソッドの呼び出し元が指定できるさまざまな比率で期間を構築したいと考えています。では、比率や期間以外のものを使用する必要があると思いますが、何ですか?

たとえば、実行時に設定できるクラス メンバーが必要で、それを ratio<,> 型にしたいと考えています。このメンバーが設定/割り当てられるコードのある時点で、一定の比率が割り当てられますが、私のクラスでは、その比率がどうあるべきかを指定したくありません。

4

2 に答える 2

10

わかりました、std::ratio呼び出し元が指定できる」が必要です。次の 3 つのオプションがあります。

  • 呼び出し元は、コンパイル時std::ratioにテンプレート パラメーターを設定する必要があります。これは簡単です。パラメータを設定するだけです。using quarter = std::ratio<1, 4>
  • 呼び出し元は、実行時std::ratioにテンプレート パラメータを設定する必要があります。これは定義上不可能であり、コンパイル時の定数です。実行時に比率を計算するために独自のクラスを実装するか、ある種のライブラリを使用する必要があります (何も知りませんが、提案を歓迎します!)。std::ratio
  • 呼び出し元は単に a をスケーリングしたいだけstd::durationです (これは、あなたが your を使用しているように見えるものですstd::ratio)。次に、数値を掛けるだけです。
于 2018-06-14T06:28:45.120 に答える