2016-05-17 2 views
-2

私はこの作業を行う方法がありますか?条件が真である場合、C++はいくつかのクラスをインスタンス化します

私は年齢が17より大きい場合、銀行の5つのインスタンスを作成したいが、私はこのエラーを取得しています:

[Error] no matching function for call to '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(); 
     } 
    } 
} 
+3

推測によるプログラミングが機能しません。 '銀行顧客[y](名前、州、年齢)は何をするのですか? –

答えて

0

あなたがオブジェクト(Bank customer[20])の配列を作成した場合、クラスはデフォルトコンストラクタを持っている必要があります。

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

これは貧弱なソリューションです。意味的には、名前のない銀行、「原産地」または年齢_mean_は何ですか? –

+0

@ LightnessRacesinOrbit:合意しましたが、それは私の指摘ではありませんでした。ちなみに、「銀行」は、銀行の顧客を表すクラスにとっても非常に貧しい名前です。 –

+0

合意した、それはかなりひどいです。 –

1
Bank customer[20]; 

ここでは、デフォルト・構築(妙customer ??と呼ばれる)20個のBankオブジェクトを:ちょうどこのような何かを定義します。または、少なくとも試みましたが、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.Plc\n"; 
    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に変更します。

関連する問題