2016-06-12 4 views
-1

BCDは、別のクラスBankCustomerDetailsのオブジェクトのリストです。 BCDは、クラスBankSystemのデータメンバーでもあります。
BCD [1] .nameの
しかし、これは動作しません - :
のは、私はこのように、リストから何かを第2の顧客の名前をアクセスしたいとしましょう。リストからオブジェクトのデータメンバーへのアクセス

class BankSystem 
    { 
    private: 
     std::list<BankCustomerDetails>BCD; 

    public: 
     std::list<BankCustomerDetails> GetBankCustomerDetails(); 
     void SetBankCustomerDetails(std::list<BankCustomerDetails>&); 
     int GetTotalCustomerCount(); 
     void Create_AddCustomerAccount_BankSystem(BankCustomerDetails&); 

     bool SearchCustomerDetails_byName(std::string); 
     bool SearchCustomerDetails_byAccountNumber(unsigned long int); 

     void UpdateCustomerDetails_byAccountNumber(std::string ,unsigned long int); 

     void DepositMoney_byAccountNumber(unsigned long int ,double); 

     void WithdrawMoney_byAccountNumber(unsigned long int , double); 

     double BalanceInquiryofCustomer_byAccountNumber(unsigned long int); 

     void DeleteCustomerDetails_byAccountNumber(unsigned long int); 

     void DisplayAllCustomerDetails(); 

    }; 



    class BankCustomerDetails 
    { 
    private: 
     std::string Name; 
     unsigned long int Account_Number; 
     double Account_Balance; 
    public: 

     BankCustomerDetails(); 
     BankCustomerDetails(std::string, unsigned long in, double); 

     std::string GetBankCustomerName(); 
     unsigned long int GetBankCustomerAccount_Number(); 
     double GetBankCustomerAccount_Balance(); 

     void SetBankCustomerName(std::string&); 
     void SetBankCustomerAccount_Number(unsigned long int&); 
     void SetBankCustomerAccount_Balance(double&); 

     void AcceptBankCustomerDetails(); 
     void DisplayBankCustomerDetails(); 
    }; 

そして、これは私が何をしたいです: - あなたは、インデックスとstd::list要素にアクセスすることはできません
Client.cpp

string nm; 
BankSystem BS; 
cout<<"Enter The Customer Name to Search Details"<<endl; 
cin>>nm; 
int flag = BS.SearchCustomerDetails_byName(nm); 

でBankSystem.cpp

bool BankSystem::SearchCustomerDetails_byName(std::string name) 
{ 
    //Need to Implement 
    for(int i = 0; i < BCD.size(); i++){ 
     if(BCDName = name) 
      return true; 
    } 
return false; 
} 
+0

ヘッダーファイルを編集できません。私は関数を実装することが許されています。 これをイテレータで実装したいと思います。 –

+0

タグを乱用しないでください –

+0

問題を指摘していただきありがとうございますが、なぜ問題がC++ faqとC++ 11タグに値しないのでしょうか。 –

答えて

0

でと角括弧。 std::listの代わりにstd::vectorを使用することをお勧めします。そして、あなたが書くことができます。もちろん

for (int i = 0; i < BCD.size(); i++) { 
    if (BCD[i].GetBankCustomerName() == name) { 
     return true; 
    } 
} 

をあなたもlistと同じことを行うことができますが、その後、あなたはイテレータを使用してループを書き直す必要があります。それはほとんど常により良いパフォーマンスを持っているので、

std::list<BankCustomerDetails>::iterator iterator; 
for (iterator = intList.begin(); iterator != intList.end(); ++iterator) 
    if (iterator->GetBankCustomerName() == name) { 
     return true; 
    } 
} 

それでも私はvectorを使用することをお勧めします。

つ以上のノート:Nameがプライベートであるため、動作しませんitemBCD[i].Name

  • 一覧。
  • 比較演算子は==であり、=ではありません。
+0

フランクの返信ありがとうございます。しかし、私はヘッダーファイルを変更することはできません。私はイテレータで要素にアクセスすることができます。あなたはそれを説明できますか? –

+0

このエラーが発生しました 'this'ポインタを 'const BankCustomerDetails'から 'BankCustomerDetails&'に変換できません。 そして、正確にはiterator-> GetBankCustomerName()は –

+0

を意味します。@Mukul:イテレータ宣言から 'const_'を削除します。 GetBankCustomerName'のようなゲッター関数は実際にはオブジェクトを変更しないので 'const'でなければなりませんが、あなたの場合はそうではありません。ヘッダを編集することはできないので、非constイテレータを使用する必要があります。イテレータiは、現在のリスト要素へのポインタです。 ' - >'演算子を使って逆参照し、現在の要素に関数を適用します。 –

関連する問題