我有一个Doughnut
类,带有eaten
布尔字段。我需要使boolean成为一个全局变量才能使它工作,但它需要是本地的,所以我可以创建许多Doughnut
个实例,其中一些被“吃掉”,有些则没有。我希望甜甜圈在被吃掉时以图形方式消失
将它设置为全球的问题是我的所有甜甜圈都被标记为“被吃掉”被吃掉,如果它是本地的,它就不会在吃掉时消失。我该如何解决这个问题?
答案 0 :(得分:7)
每个甜甜圈都有一个布尔值。
如果您有甜甜圈类,请添加成员标志:
class Doughnut
{
bool m_bEaten;
};
或者您可能不想将信息存储在甜甜圈中,因此您可以进行映射;)
std::map<Doughnut, bool> Doughnuts;
但是你需要实现operator&lt;对于甜甜圈:)
或者,如果你知道你有10个甜甜圈,你可以有一个静态阵列来容纳吃甜甜圈的旗帜:
bool eatenDoughnuts[10]; // Initialize properly.
// Eat any doughnut you like:
eatenDoughnuts[2] = true;
// Check if you have eaten doughnut number 2:
if(eatenDoughnuts[2])
{
// Pure doughnut number 2.
}
或者,如果您在编译时不知道甜甜圈的数量,请使用动态容器:
std::vector<bool> atenDoughnuts;
或者,使用模板元编程来吃你的甜甜圈编译时间;)
然而,这个问题已被编辑,所以我们确定你有一个甜甜圈课程。所以这就是:
#include <vector>
class Doughnut
{
public:
enum Kind {VANILLA, CHOCOLATE}; // The kind of your doughnut.
Doughnut(Kind k = VANILLA) // VANILLA is the default.
: kind(k), eaten(false) {}
void eat() { eaten = true; } // We luv eating doughnuts.
bool isEaten() { return eaten; }
private:
Kind kind; // The kind of your doughnut.
bool eaten; // Has anyone eaten it yet?
};
int main()
{
// Your delicious doughnuts package :)
std::vector<Doughnut> deliciousDoughnuts;
// Go buy some delicious doughnuts.
deliciousDoughnuts.push_back(Doughnut(Doughnut::VANILLA));
deliciousDoughnuts.push_back(Doughnut(Doughnut::CHOCOLATE));
deliciousDoughnuts.push_back(Doughnut(Doughnut::VANILLA));
// You love delicious chocolate doughnut? EAT IT!
deliciousDoughnuts[1].eat();
// Check have you drooped it down or you are good!
if(deliciousDoughnuts[1].isEaten())
{
// Poor chocolate doughnut...
}
}
我今天有点亲切;)
答案 1 :(得分:1)
我假设您有一个Doughnut
课程。将boolean
成员添加到类中,并创建一个允许您更改其值的函数。
答案 2 :(得分:1)
如果甜甜圈在吃的时候会消失,你真的想要一面旗帜 什么?听起来我更有可能只想毁灭 它。从图形上看,如果您正在使用MVS或类似的东西,那么 可视化将由观察者和析构函数处理 甜甜圈将通知观察员其失踪情况; View对象 将照顾图形(也可能破坏自己, 一旦物体从屏幕上删除了。)