struct

2017-06-19 11 views
0

のメンバーのデフォルトのコンストラクタのデフォルトの引数このコードは銀行のためのものです。これは、日付と人に関する個人情報の2つの構造で構成されています。銀行口座に関する情報は、クラス内で整理されています。私はあらかじめ定義された引数を持つデフォルトのコンストラクタを書く必要があります。クラスにはstruct型のデータメンバが含まれていますが、struct型のデータメンバの初期化方法はわかりません。ここに私のコードです。struct

struct Date { 
    int day, month, year; 
}; 

struct Person { 
    char name[20]; 
    char surname[20]; 
    int IDnum[13]; 
    Date dateBirth; 
}; 

class BankAccount { 
public: 
    BankAccount(????Person p????, int s = 0, bool em = true, int sal = 0) { 
     ??sth for Person p I guess?? 
     sum = s; 
     employed = em; 
     salary = sal; 
    } 
private: 
    Person person; 
    int sum; 
    bool employed; 
    int salary; 
}; 

私はすべての助けに感謝します。前もって感謝します。

+0

related/dupe:https://stackoverflow.com/questions/15307954/default-value-for-struct-parameter – NathanOliver

+0

はい私はこの投稿を見ましたが、私はそれを理解していなかったので役に立たなかった。構造内のコンストラクタ? – Winston

+1

C++の 'struct'と' class'の違いは、デフォルトの可視性です: 'public'対' private'です。 – Jarod42

答えて

1

ことがstruct/class変数を初期化するときに使用するのと同じ構文です。

BankAccount(Person p = {"John", "Doe", {1,2,3,/*...*/}, {1,1,2000}}, int s = 0, bool em = true, int sal = 0) 

いくつかの初期化子が含まれていない場合、Person p = {"John", "Doe"}のように、その後、初期化子を欠いているすべてのフィールドはゼロに初期化されています。

つまり、Person p = {}を実行して、すべてのフィールドをゼロに設定することもできます。

オプションで、{...}の代わりにPerson{...}と書くことができます。これは@Curiousが行ったものです。

また

、あなたがC++、ください使用std::stringの代わりにchar配列を使用している場合。

+0

「すべてのフィールドをゼロに設定する」と期待されるパラメータを持つpersonコンストラクタの呼び出しは、これもchar配列に適用されます。私は理解しているか、 '\ 0'か空の文字列 ""に設定しているとは思っていませんか? – Winston

+0

@Winston両方。すべてのシンボルは ''\ 0' '(別名' 0')に設定され、文字列を空にします。空文字列の場合は、空白文字列ではなく実際の '" "'を意味します。 – HolyBlackCat

+0

はい、それは私の悪いことです。空白文字列ではありませんでした。 – Winston

1

構造体とクラスはC++で、ほぼ同じものです、構造体はあなたがまた、クラス定義のメンバ変数の初期化子を提供することができます

class BankAccount { 
public: 
    BankAccount(const Person& p = Person{...}, int s = 0, bool em = true, int sal = 0) 
      : person{p}, sum{s}, employed{em}, salary{sal} {} 
private: 
    Person person; 
    int sum; 
    bool employed; 
    int salary; 
}; 

このような状況で何をすべきかであるコンストラクタを持つことができます自体、例

struct Something { 
    int integer{1}; 
    bool boolean{false}; 
}; 
+0

私は失礼ではありませんが、const Personとp = Person {...}の意味を説明できますか?これはPerson {...}を意味しますか? – Winston

+0

@Winstonこれは、上記の答えと同じ意味を持ちます。 – Curious