gpt4 book ai didi

c++ - 我如何使用比率而不是 float ?

转载 作者:行者123 更新时间:2023-11-28 01:30:20 25 4
gpt4 key购买 nike

所以我知道我不能使用 float 作为模板参数:

template<float T>
float foo(const float param) { return param + T; }

我听说了ratio可以作为替代品。我想做这样的事情:

template<ratio T>
float foo(const float param) { return param * T::num / static_cast<float>(T::den); }

不幸的是 ratio 不是一个完整的类型,所以它根本不起作用。最后我不得不问,为什么不这样做:

template<int Num, int Denom>
float foo(const float param) { return param * Num / static_cast<float>(Denom); }

我的偏好是使用ratio,因为它更清楚地代表了我正在尝试做的事情。有人可以为我提供一种使用 ratio 的简单方法吗?

最佳答案

没有类型 ratiostd::ratio 是一个类模板。这个模板本身有分子和分母作为模板参数。

如果你想使用 std::ratio 可以这样做:

template<class T>
float foo(const float param) {
return param * T::num / static_cast<float>(T::den);
}

auto x = foo<std::ratio<4,7>>(42);

关于c++ - 我如何使用比率而不是 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com