Мои getlines показывают ошибку, а также мои функции get, когда я помещаю переменную в скобки c ++ - PullRequest
0 голосов
/ 23 марта 2020

У меня есть банковский проект, и я пытаюсь указать название банка, адрес и время работы. Мои getline s показывают ошибку, а также мои get функции.

Input exact error messages here please.
'getline': no matching overloaded function found   
no suitable user-defined conversion from "Bank" to "std::string" exists

Вот класс для банка:

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cctype>
#include <cstdlib>

using namespace std;

class Bank {
public:
    void setBankName(string bn) { bn = bankname; }
    string getBankName() { return bankname; }
    void setBankAdd(string ba) { ba = bankadd; }
    string getBankAdd() { return bankadd; }
    void setWorkingHours(string bwh) { bwh = bankworkinghours; };
    string getWorkingHours() { return bankworkinghours; }

private: 
    string bankname, bankadd, bankworkinghours;
};

//and then this is in my main function
int main() {
    Bank bankname, bankadd, bankworkinghours;
    char userChoice; // numbers 1-9

    int number=0;
    system ("color 5f");
    cout << "Name of bank: ";
    getline(cin, bankname); **//all the get lines also show error**
    cout << endl;
    cout << "Bank address: ";
    getline(cin, bankadd);
    cout << endl;
    cout << "Bank working hours: ";
    getline(cin, bankworkinghours);
    cout << endl;
    bankname.setBankName(bankname); //the things in the parentheses show error
    bankadd.setBankAdd(bankadd);
    bankworkinghours.setWorkingHours(bankworkinghours);

Ответы [ 3 ]

1 голос
/ 23 марта 2020

Ошибка не требует пояснений. Вторым параметром функции getline является std: string, поэтому определите имя банка как std: string, а затем задайте имя объекта банка с помощью setBankName.

0 голосов
/ 23 марта 2020

1 - Вы не создали банк Object в основном для установки атрибутов класса. Вам нужен объект со ссылкой на этот объект, вы будете устанавливать параметры банка классов.

2 - bankname, bankadd, bankworkinghours являются строками, и вы сделали их Bank

Здесь обновленный код и работает нормально в VS 2019 без каких-либо ошибок. Всего несколько изменений в первых 2 и последних трех строках основной

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cctype>
#include <cstdlib>

using namespace std;

class Bank {
public:
    void setBankName(string bn) { bn = bankname; }
    string getBankName() { return bankname; }
    void setBankAdd(string ba) { ba = bankadd; }
    string getBankAdd() { return bankadd; }
    void setWorkingHours(string bwh) { bwh = bankworkinghours; };
    string getWorkingHours() { return bankworkinghours; }

private:
    string bankname, bankadd, bankworkinghours;
};

//and then this is in my main function
int main() {

    Bank bankObj;
    string bankname, bankadd, bankworkinghours;

    char userChoice; // numbers 1-9

    int number = 0;
    system("color 5f");
    cout << "Name of bank: ";
    getline(cin, bankname); 
        cout << endl;
    cout << "Bank address: ";
    getline(cin, bankadd);
    cout << endl;
    cout << "Bank working hours: ";
    getline(cin, bankworkinghours);
    cout << endl;

    bankObj.setBankName(bankname);
    bankObj.setBankAdd(bankadd);
    bankObj.setWorkingHours(bankworkinghours);

}
0 голосов
/ 23 марта 2020

void setBankName (строка bn) {bn = имя банка; } это неправильный путь. попробуйте bankname = bn.

...