c++ - Ratio<,> 是常量,但如果我想接受不同的比率作为参数怎么办?

标签 c++ c++11 metaprogramming std rational-numbers

也许是一个矛盾的问题: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/

相关文章:

c++ - 按值调用时的隐式转换和多态性

c++ - 如何使用模板编程创建多类型数组

c++ - 模板类的不同对象的通用接口(interface)

ruby - 定义方法 : How to dynamically create methods with arguments

ruby - 在ruby中从自身获取实例变量名

c++ - 我的 MakeFile 找不到我的头目录

c++ - 在 C++ 中实例化对象而不调用构造函数

c++ - 在初始化的未知大小数组中使用 sizeof() - C++

c++ - 合并来自 std::set 的相邻条目

C++::使用模板技巧访问多个私有(private)成员