如何更改私有bool值C++
问题描述:
我正在创建一个模拟门的程序。 我有这些问题,我设置为私人的这些布尔值,但我想改变它们的价值,当程序启动时是错误的。 也是我瑞典语的原因我用klar = done和val = choice这两个词来表示我的坏习惯。如何更改私有bool值C++
//Main.cpp contains the user menu for the "door" controls
#include <iostream>
#include "Door2.h"
using namespace std;
int main(){
bool done = false;
int val,klar;
Door2* d= new Door2();
while(done == false){
cout << "Do you want to?" << endl;
cout << "1. Open the door?" << endl;
cout << "2. Close the door?" << endl;
cout << "3. Lock the door?" << endl;
cout << "4. Unlock the door?" << endl;
cin >> val;
if (val == 1){
d->open();
}
if (val == 2){
d->close();
}
if (val == 3){
d->lock();
}
if (val == 4){
d->unlock();
}
cout << "Är du klar?" << endl << "1. Ja!" << endl << "2.Nej!" << endl;
cin >> klar;
if(klar == 1){
done = true;
}
}
return 0;
}
现在这里头文件是在那里我有两个布尔值,有没有办法在程序启动时其值设置为false?
#pragma once
class Door2{
private:
bool Open;
bool Lock;
public:
void open();
void close();
void lock();
void unlock();
};
而且Door.cpp
//Door.cpp The file that checks if the "door" is closed open locked unlocked etc.
#include "Door2.h"
#include <iostream>
using namespace std;
void Door2::open(){
if (Open == true){
cout << "The door is already open!" << endl;
}else{
Open = false;
cout << "The door is open!" << endl;
}
}
void Door2::close(){
if (Open == false){
cout << "The door is already closed!" << endl;
}else{
Open = true;
cout << "The door is closed!" << endl;
}
}
void Door2::lock(){
if (Lock == true){
cout << "The door is already locked!" << endl;
}else{
Lock = false;
cout << "The door is locked!" << endl;
}
}
void Door2::unlock(){
if(Lock== false){
cout << "The door is already unlocked!" << endl;
}else{
Lock = true;
cout << "The door is unlocked!" << endl;
}
}
编辑:我是新来的C++类是的,我一直试图寻找一个答案,但找不到任何。
答
你不会设置在程序开始这些变量,而是构建了门对象时:
.H
class Door {
// ....
Door(); // Constructor
的.cpp
Door::Door() : open (false), Lock(false) { }
答
使用构造与设置您的标志来false
的初始化列表:
Door2() : Open(false), Lock(false) { }
注:
你应该把你的类型的专用名称空间和避免全球投入那么一。
答
使用构造函数 门() { open = false; lock = false; }
答
你可以用一个构造函数来做到这一点,它会在声明门时设置值。 目前我看到你正在使用默认构造函数,但你可以简单地将它替换为刚出现的答案。无论哪种方式,我建议再次通过类/构造函数教程。
您需要'初始化'Open'和'Lock'值..阅读关于C++中的构造函数来实现它.. – liaK 2014-09-04 07:24:38
请不要执行'if(thing == true)'或'if事==假)'。他们是布尔人。在适当情况下使用'if(thing)'或'if(!thing)' – 2014-09-04 07:42:15
我会尽量记住,这只是我去年在编程课上解释过的。 – preyerguilt 2014-09-04 07:52:00