0

次のように、C++ のクラスでメンバー オブジェクトを宣言しようとしています。

class bankAccount
{
public:
  bankAccount(int, int, int, string, int);
private:
  bankBranch homeBranch;
};

bankAccount::bankAccount(int accountNumber, int accountBalance, int homebsbnumber, 
string homeaddress, int homepostcode) : homeBranch(homebsbnumber, homeaddress, homepostcode) {}
class bankBranch
{
public:
/** bankBranch(const int& bsbNumber, const string& address, const int& postCode) 
{ 
    this->bsbNumber = bsbNumber;
    this->address = address;
    this->postCode = postCode;
}; **/

bankBranch(int, string, int);
void setPostCode() 
{ 
    cout << "Please type in the postal code of your bankBranch: " << endl;
    cin >> postCode;
}
void setBsbNumber()
{ 
    cout << "Please type in the BSB Number of your bankBranch: " << endl;
    cin >> bsbNumber;

}
void setAddress() 
{ 
    cout << "Please type in the address of your bankBranch " << endl;
    cin >> address;
}
// Return methods for bsb number, address and post code
int getBsbNumber() 
{
    return this->bsbNumber;
}
string getAddress() 
{
    return this->address;
}
int getPostCode()
{ 
    return this->postCode;
}
private:
  int bsbNumber;
  string address;
  int postCode;
};
bankBranch::bankBranch(int bsbnum, string bankaddress, int bankpostcode) { 

bsbNumber = bsbnum;
address = bankaddress;
postCode = bankpostcode;

}

私はこれらのエラーを取得しています:

  • 構文エラー: ';' がありません 識別子「homeBranch」の前
  • 型指定子がありません - int と仮定します (明らかにオブジェクトなので混乱していますか?)
  • 'bankAccount': 不正なメンバーの初期化: 'homebranch' はベースまたはメンバーではありません

私は多くのことを試しましたが、これらのエラーを修正できないようです。メンバー オブジェクト bankBranch homeBranch をクラス bankAccount に適切に追加する方法について、誰かが私に洞察を提供してくれませんか? そして、初期化リストを適切に使用する方法。

4

1 に答える 1

2

このファイルで定義するヘッダー ファイルをインクルードする必要がありbankBranchます (翻訳単位ではなく)。

コンポジションを使用していてbankBranch、コンパイラのメンバーを作成するには、レイアウトの詳細とインスタンスに必要なメモリを知る必要があるためbankBranch、この情報は の定義を知ることによってのみ取得できますbankBranch。ここでは前方宣言では十分ではないことに注意してください。

于 2013-05-25T14:39:02.327 に答える