如果条件为true,则c++实例化几个类

c++ instantiate several classes if a condition is true

本文关键字:几个 实例化 c++ 条件 true 如果      更新时间:2023-10-16

有什么方法可以让它工作吗?

如果年龄大于17,我想创建5个银行实例,但我得到了这个错误:

[错误]调用"Bank::Bank()"时没有匹配的函数

我需要在学校的作业中做好这件事。

#include <iostream>
#include <string>
using namespace std;
class Bank{
    string Fullname;
    string StateOfOrigin;
    int Age;
     public:
        Bank(string name, string state, int age){
            Fullname = name;
            StateOfOrigin = state;
            Age = age;
        }
        string getname(){
            return Fullname;
        }
        string getstate(){
            return StateOfOrigin;
        }
        int getage(){
            return Age;
        }
};
int main(){
    Bank customer[20];
    int x,y,z,age;
    string name;
    string state;
    cout<<"==============================="<<endl;
    cout<<"Welcome To Hojma Bank.Plc"<<endl;
    cout<<"How many accounts do you want to create? n";
    cin>>y;

    for(int k = 0; k < y; k++){
        cout<<"Please input your fullname"<<endl;
        cin>>name;
        cout<<"Please input your state of origin"<<endl;
        cin>>state;
        cout<<"Please input your age";cout<<endl;
        cin>>age;
        if(age >= 18){
            Bank customer[y](name,state,age);
            cout << customer[y].getname();  
        }
    }
}
Bank customer[20];

这里默认构造20个Bank对象(奇怪地称为customer??)。或者,至少您尝试过,但是Bank类没有默认构造函数。据我所知,这也不应该。

Bank customer[y](name,state,age);
cout << customer[y].getname();

在这里,我猜您试图"声明"单个数组元素,但它不是这样工作的。

此外,您对y的使用是错误的;您可以接受y最大值,但您可能想要使用当前循环计数器值k。这也被打破了,因为你有一个年龄过滤器,所以你可能会跳过一些数组元素。


为什么不使用美味可口的std::vector,并随意添加新客户?然后,您还可以摆脱那些令人困惑的int,其中一半您甚至没有使用。

int main()
{
    int y = 0;
    cout << "===============================n";
    cout << "Welcome To Hojma Bank.Plcn";
    cout << "How many accounts do you want to create?" << endl;
    cin >> y;
    std::vector<Bank> customers;
    for (int i = 0; i < y; i++) {
        int age;
        string name;
        string state;
        cout << "Please input your full name" << endl;
        cin >> name;
        cout << "Please input your state of origin" << endl;
        cin >> state;
        cout << "Please input your age" << endl;
        cin >> age;
        if (age >= 18){
            customers.emplace_back(name,state,age);
            cout << customer.back().getname();
        }
    }
}

您也可以对用户输入进行一些错误检查。并将该类重命名为Customer

如果创建对象数组(Bank customer[20]),则该类需要有一个默认构造函数。定义如下:

Bank() : Fullname(""), StateOfOrigin(""), Age(0) {}