如何更改私有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++类是的,我一直试图寻找一个答案,但找不到任何。

+0

您需要'初始化'Open'和'Lock'值..阅读关于C++中的构造函数来实现它.. – liaK 2014-09-04 07:24:38

+0

请不要执行'if(thing == true)'或'if事==假)'。他们是布尔人。在适当情况下使用'if(thing)'或'if(!thing)' – 2014-09-04 07:42:15

+0

我会尽量记住,这只是我去年在编程课上解释过的。 – preyerguilt 2014-09-04 07:52:00

你不会设置在程序开始这些变量,而是构建了门对象时:

.H

class Door { 
    // .... 
    Door(); // Constructor 

的.cpp

Door::Door() : open (false), Lock(false) { } 

使用构造与设置您的标志来false的初始化列表:

Door2() : Open(false), Lock(false) { } 

注:

你应该把你的类型的专用名称空间和避免全球投入那么一。

使用构造函数 门() { open = false; lock = false; }

你可以用一个构造函数来做到这一点,它会在声明门时设置值。 目前我看到你正在使用默认构造函数,但你可以简单地将它替换为刚出现的答案。无论哪种方式,我建议再次通过类/构造函数教程。