gpt4 book ai didi

c++ - 避免多个 bool 值的优雅方法?

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

在我的小型 GUI 库中,不同的事情会导致 Widget 变得不可见。

  1. 可以折叠窗口。所有 child 的意志必须递归地变得不可见。
  2. 用户可以手动隐藏小部件。
  3. 小部件可能会被“排除”。考虑一个“快门”列表框:只有按下列表框按钮时才会显示快门及其内容。

这是我目前的解决方案:

class Widget { 
// ...
bool collapsed;
bool hidden;
bool excluded;

public:
bool isVisible() { return !collapsed && !hidden && !excluded; }
void hide() { hidden = true; }
void show() { hidden = false; }
// ...
};

我不喜欢使用三个 bool 值来表示同一事物。

我考虑过使用 int:

class Widget {
int hiddenLevel{0};

bool isVisible() { return hiddenLevel == 0; }
void hide() { ++hiddenLevel; }
void show() { --hiddenLevel; }
};

但是用户可能不小心调用了两次hide()


有没有一种优雅的方法可以避免重复基本上做同样事情的变量?我不在乎小部件是collapsedhidden 还是excluded,我只想知道它是否可见,并恢复折叠、隐藏或排除它的效果。

最佳答案

I don't like the fact that three booleans value are used to represent the same thing.

正如您自己所说,这不是“同一件事”。所有三个条件都是独立的。

在我看来,您采用了正确的方法,isVisible() 看起来应该是这样。

关于c++ - 避免多个 bool 值的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529709/

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