如果条件为true,则c++实例化几个类
c++ instantiate several classes if a condition is true
有什么方法可以让它工作吗?
如果年龄大于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) {}
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- 编译时检查是否有两个具有相同模板参数的模板实例化
- 如何实例化多个 set 对象来测试 Set 类的各种构造函数和方法
- 初始化几个用逗号","分隔的变量
- 如何使用线程来实例化多个 QApplication
- 如果条件为true,则c++实例化几个类
- 如何在不实例化两个c++类型的情况下确定这两个类型
- C++的几个对象序列化
- 实例化函数的多个模板并在运行时选择的通用解决方案
- 实例化创建线程的类的多个实例
- 使用OOP,当您有一个类的实例作为另一类的属性时,如何可能只在第二个类中实例化它
- 创建了三个线程来实例化同一个类.但很快只有一个线程继续运行
- 如何通过定义派生类的构造函数来实例化两个基类的私有数据成员
- c++模板函数:显式实例化一个或多个专门化
- 只在类的第一个实例初始化时调用的成员函数(c++)
- 在多个翻译单元中函数模板实例化的标识
- 我怎么能使用一个非常量值实例化一个类的多个对象
- 特化模板的多个实例化