我有一个Doughnut类,带有一个eaten布尔字段.我需要使boolean成为一个全局变量才能使它工作,但它需要是本地的,所以我可以创建许多Doughnut实例,其中一些被"吃掉"而另一些则没有.我希望甜甜圈在被吃掉后以图形方式消失
将它设置为全球的问题是我的所有甜甜圈都被标记为"吃掉"被吃掉,如果它是本地的,它就不会在吃掉时消失.我怎样才能解决这个问题?
每个甜甜圈都有一个布尔值.
如果您有甜甜圈类,请添加成员标志:
class Doughnut
{
bool m_bEaten;
};
Run Code Online (Sandbox Code Playgroud)
或者您可能不想将信息存储在甜甜圈中,因此您可以进行映射;)
std::map<Doughnut, bool> Doughnuts;
Run Code Online (Sandbox Code Playgroud)
但是你需要为Donut实现operator <:)
或者,如果你知道你有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.
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您在编译时不知道甜甜圈的数量,请使用动态容器:
std::vector<bool> atenDoughnuts;
Run Code Online (Sandbox Code Playgroud)
或者,使用模板元编程来吃你的甜甜圈编译时间;)
然而,问题是编辑的,所以我们确定你有一个甜甜圈课.所以这里:
#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...
}
}
Run Code Online (Sandbox Code Playgroud)
我今天有点亲切;)
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |