比率<,>是不变的,但是如果我想接受不同的比率作为参数呢?

Tat*_*eva 6 c++ metaprogramming std rational-numbers c++11

也许是一个矛盾的问题:比率<,>根据定义是编译时常量.

但是,我想构建具有不同比率的持续时间,可以由我的方法的调用者指定.我猜我应该使用除比率和/或持续时间以外的东西,然后,但是什么?

我想拥有一个可以在运行时设置的类成员,我希望它的类型为<,>.在代码中的某个时刻,这个成员被设置/分配,它将被分配一个恒定的比率,但在我的班级,我不想指定该比率应该是什么.

and*_*eee 9

你说,你需要std::ratio"可以被调用者指定".有三种不同的选择:

  • 调用者希望std::ratio编译期间设置模板参数.这是微不足道的,只需设置参数,例如using quarter = std::ratio<1, 4>.
  • 调用者想要std::ratio运行时设置模板参数.根据定义,这是不可能的,std::ratio编译时常量.您将不得不在运行时实现自己的类计算比率或使用某种类型的库(我不知道任何建议,欢迎提出建议!).
  • 如果你只想扩展你的std::duration(你似乎用它来做std::ratio),只需将它与一个数相乘即可.