也许是一个矛盾的问题:ratio<,>根据定义,是一个编译时常量。
但是,我想构建具有不同比率的持续时间,这些比率可以由我的方法的调用者指定。我想我应该使用比率和/或持续时间以外的东西,但是什么?
比方说,我想要一个可以在运行时设置的类成员,并且我希望它的类型为 ratio<,>。在代码中的某个位置,这个成员被设置/分配,它会被分配一个恒定的比率,但在我的类(class)中,我不想指定该比率应该是多少。
最佳答案
好的,你需要一个 std::ratio
“可以由调用者指定”。共有三个不同的选项:
- 调用者想要设置
std::ratio
编译时期间的模板参数。这很简单,只需设置参数,例如using quarter = std::ratio<1, 4>
. - 调用者想要设置
std::ratio
运行时期间的模板参数。这在定义上是不可能的,std::ratio
是一个编译时常量。您必须在运行时实现自己的计算比率的类或使用某种库(我不知道有什么,欢迎提出建议!)。 - 调用者只是想缩放一个
std::duration
(这就是您似乎使用std::ratio
的目的)。然后就是multiply it with a number .
关于c++ - Ratio<,> 是常量,但如果我想接受不同的比率作为参数怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50850626/