2014-09-12 4 views
-2

Hy, я новичок на C++, и у меня небольшая проблема. Существует функция, называемая «bool checkIfPersonAlreadyExists() {...}», и я хочу, чтобы эта функция возвращала переменную типа bool, но это не так. Кто-нибудь может мне с этим помочь? (Ответ должен быть «истинным» или «ложным», но в таком виде: «return IfPersonAlreadyExists»).C++ печать переменных типа bool

#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

+0

Не используйте имя параметра, которое совпадает с именем переменной-члена. Это законно, но это сбивает с толку. – Logicrat

+0

Он должен возвращать логическое значение, но он ничего не делает, и мой вопрос: есть ли в моем коде проблема в том, что она не возвращает ответ? –

ответ

1

Для того, чтобы напечатать true и false вместо 1 и 0 соответственно использовать std::boolalpha как в примере ниже:

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

Функция-член Library::checkIfPersonAlreadyExists возвращает bool.

Редактировать:

включают также string заголовок (т.е. #include <string>).

+0

Я использовал boolalpha. Моя функция не возвращает переменную типа bool. И я не знаю, в чем проблема. –

+0

Я тестировал его, и он запускался «отлично», когда я включил заголовок 'string'. – 101010

0

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

Должно быть возвращено 0 или 1, я думаю.

Вобще соиЬ < < (library.getIfPersonAlreadyExists() == истинный "истинный": "ложь"?) < < Endl;

+0

'std :: boolalpha' существует, поэтому вам не нужно это делать –

0

Вы будете менее смущены, если вы используете другую капитализацию для местных жителей, глобальных переменных и параметров.

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

Его всегда правда!

Смежные вопросы