2014-09-12 62 views
-2

Hy在那裏,我是新的C++和我有一個小問題。有一個叫做「bool checkIfPersonAlreadyExists(){...}」的函數,我希望這個函數返回一個bool類型的變量,但它不會。誰能幫我這個? (答案應該是「真」或「假」,但以這種形式:「返回IfPersonAlreadyExists」)。C++打印出布爾型變量

#include <iostream> 
#include <cctype> 
#include <cstdlib> 

using namespace std; 

class Library { 
    private: 
     string name, surname; 
     int LSP; 
     bool IfPersonAlreadyExists; 

     //toString metodas ir kaip ji pasiekti is private????? 
     string toString (string name) { 
      cout << name << " " << surname << " " << LSP << endl; 
      return name; 
     } 
    public: 
     //setters 
     int setName (string name) { 
      if (!name.empty() && isalpha(name[0]) && isupper(name[0])) 
       this -> name = name; 
      else { 
       cout << "Wrong entry!" << endl; 
       return 0; 
      } 
     } 
     int setSurname (string surname) { 
      if (!surname.empty() && isalpha(surname[0]) && isupper(surname[0])) 
       this -> surname = surname; 
      else { 
       cout << "wrong entry!" << endl; 
       return 0; 
      } 
     } 
     int setLSP (int LSP) { 
      if (LSP > 0) 
       this -> LSP = LSP; 
      else { 
       cout << "Wrong entry!" << endl; 
       return 0; 
      } 
     } 
     void setIfPersonAlreadyExists (bool IfPersonAlreadyExists) { 
      this -> IfPersonAlreadyExists = IfPersonAlreadyExists; 
      IfPersonAlreadyExists = true; 
     } 
     //getters 
     string getName() { 
      return name; 
     } 
     string getSurname() { 
      return surname; 
     } 
     int getLSP() { 
      return LSP; 
     } 
     bool getIfPersonAlreadyExists() { 
      return IfPersonAlreadyExists; 
     } 

     //Kaip padaryti kad return true or false?????/? 
     bool checkIfPersonAlreadyExists (bool IfPersonAlreadyExists, int LSP) { 
      int LSPCheck; 
      cout << "Enter LSP number to check" << endl; 
      cin >> LSPCheck; 
      if (LSPCheck != LSP) { 
       IfPersonAlreadyExists = false; 
       //cout << boolalpha << IfPersonAlreadyExists << endl; 
       return IfPersonAlreadyExists; 
      } 
      else { 
       IfPersonAlreadyExists = true; 
       cout << boolalpha << IfPersonAlreadyExists << endl; 
       return IfPersonAlreadyExists; 
      } 
     } 
}; 


int main() { 
    Library library; 
    string name, surname; 
    int LSP; 
    bool IfPersonAlreadyExists = true; 
    cout << "Enter your name: " << endl; 
    cin >> name; 
    library.setName(name); 
    //cout << library.getName() << endl; 

    cout << "Enter your surname: " << endl; 
    cin >> surname; 
    library.setSurname(surname); 
    //cout << library.getSurname() << endl; 

    cout << "Enter your LSP number: " << endl; 
    cin >> LSP; 
    library.setLSP(LSP); 
    //cout << library.getLSP() << endl; 
    //library.toString(name); 

    library.setIfPersonAlreadyExists(IfPersonAlreadyExists); 
    // cout << library.getIfPersonAlreadyExists() << endl; 

    library.checkIfPersonAlreadyExists(IfPersonAlreadyExists, LSP); 

    return 0; 
} 
+1

它已經返回一個布爾值...什麼是問題? – IdeaHat 2014-09-12 19:51:59

+0

請勿使用與成員變量名稱相同的參數名稱。這是合法的,但很混亂。 – Logicrat 2014-09-12 19:55:31

+0

它應該返回布爾值,但它什麼也不做,我的問題是:我的代碼中有沒有問題,它不會返回答案? – 2014-09-12 19:59:00

回答

1

爲了打印truefalse代替10分別使用std::boolalpha如下面的例子:

std::cout << std::boolalpha << library.checkIfPersonAlreadyExists(IfPersonAlreadyExists, LSP) << std::endl;

成員函數Library::checkIfPersonAlreadyExists已經返回bool

編輯:

另外包括string報頭(即,#include <string>)。

+0

我用了boolalpha。我的函數不會返回布爾類型變量。我不知道有什麼問題.. – 2014-09-12 19:57:49

+0

我測試了它,當我包含字符串標題時它運行「很好」。 – 101010 2014-09-12 20:06:01

0

cout < < library.getIfPersonAlreadyExists()< < endl;

應該返回0或1我認爲。

只要做cout < <(library.getIfPersonAlreadyExists()== true?「true」:「false」)< < endl;

+0

'std :: boolalpha'存在,所以你不需要那樣做 – 2014-09-12 20:07:28

0

如果您對本地人,全局變量和參數使用不同的大寫字母,您將不會感到困惑。

void setIfPersonAlreadyExists (bool IfPersonAlreadyExists) { 
     this -> IfPersonAlreadyExists = IfPersonAlreadyExists; 
     IfPersonAlreadyExists = true; 
    } 

它總是如此!