有时在实现某种算法的类中,我希望用户能够启用或禁用某些功能,比方说某些输入值的缩放。有时我会看到以下代码(在构造函数中设置了 bool/float 值):
class A
{
private:
bool enableScaling;
float scaleFactor;
public:
float foo(float x) const {
...
if(enableScaling) {
x *= scaleFactor;
}
...
}
};
我不清楚用于此目的的两个变量,我正在寻找针对此类情况的建议。
在规模的情况下,我可以完全省略 bool 变量并设置默认 scaleFactor = 1.0f
(中性),我想这对我来说没问题。有时“特征参数值”只能是正数,所以我可能会把它的默认值设置为-1来表示这个被禁用,但有时也不是这样(所有值都允许)。
对于这种情况,您通常采用什么方法?
最佳答案
可以折叠enableScaling
和 scaleFactor
至 std::optional<scaleFactor>
.
这是 C++17 的方式。
在此之前,boost::optional
是一个选择。
在您的具体情况下,默认 scaleFactor
至 1.0f
是一个选项,因为乘以 float
通过 1.0f
必须保留原来的 float
符合 IEEE754 标准(假设您的平台符合该标准)。
关于c++ - 使用 bool 变量和值启用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54669296/