c++ - 使用 bool 变量和值启用功能

标签 c++ oop architecture

有时在实现某种算法的类中,我希望用户能够启用或禁用某些功能,比方说某些输入值的缩放。有时我会看到以下代码(在构造函数中设置了 bool/float 值):

class A
{
private:
  bool enableScaling;
  float scaleFactor;

public:
  float foo(float x) const {
    ...

    if(enableScaling) {
      x *= scaleFactor;
    }

    ...
  }
};

我不清楚用于此目的的两个变量,我正在寻找针对此类情况的建议。

在规模的情况下,我可以完全省略 bool 变量并设置默认 scaleFactor = 1.0f(中性),我想这对我来说没问题。有时“特征参数值”只能是正数,所以我可能会把它的默认值设置为-1来表示这个被禁用,但有时也不是这样(所有值都允许)。

对于这种情况,您通常采用什么方法?

最佳答案

可以折叠enableScalingscaleFactorstd::optional<scaleFactor> .

这是 C++17 的方式。

在此之前,boost::optional是一个选择。

在您的具体情况下,默认 scaleFactor1.0f是一个选项,因为乘以 float通过 1.0f必须保留原来的 float符合 IEEE754 标准(假设您的平台符合该标准)。

关于c++ - 使用 bool 变量和值启用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54669296/

相关文章:

c# - 如果预先知道订阅者,我应该使用观察者模式吗?

javascript - 将一个对象合并到另一个对象的最佳方法(不覆盖)

architecture - 如何扩展图像托管/服务?

Android应用架构-Fragment

c# - 在 c# 或 c++ 中使用更快的时钟加速应用程序

c++ - 将 vector 传递给函数

c++ - libCURL 不遵循重定向(即使使用 FOLLOW_LOCATION 1L)

C++ 函数 = 删除

c++ - () 和 = 在创建类实例时有什么区别?

c++ - 在我的 7 位加法器中,进位位不正确,我不知道为什么