0

フィールドを初期化するために 5 つの引数を受け取るクラスでコンストラクターを定義しています。これらの引数/フィールドのうちの 2 つは、Date構造体から取得されます。

Information(string NewName, Date start, Date finish,
            double newNumber, double newLevel);

これはそうするための適切な形式ですか?

また、引数を に入力するにはどうすればよいint main ()ですか? このようなもの?構造体の引数に値を入れるにはどうすればよいですか? 彼らは引用符を付けますか?

Information arguments("Susan Jones", "3/5/5", "3/5/5", 15, 58);

日付構造:

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

2 に答える 2

1

コンストラクターで使用される非基本型へのconst参照を渡すことをお勧めします。したがってconst&、単なるコピーではなくデータを作成します。具体的には:

Information(const string& NewName,const Date& start,const Date& finish,
          double newNumber, double newLevel);

また、Dateにコンストラクターがあると仮定するstd::stringconst char*、コンストラクターを呼び出す方法が正しいと仮定します(ただし、という別のクラスのコンストラクターを呼び出しているようですPaycheck)。

それ以外の場合、コードは妥当なようです。

于 2013-03-11T19:10:53.873 に答える
0

あなたInformationが示すコンストラクタは合理的に見えます。中規模または大規模なオブジェクトの場合はconst Date&、単にDate. 「通常の」方法は次のとおりです。

Information(const string& NewName, const Date& start, const Date& finish,
      double newNumber, double newLevel);

ただし、"3/5/5"のインスタンスを構築する正しい方法ではありませんDate。2 つの方法があり、両方を以下に示します。前者の方が理解しやすいですが、後者の方がはるかに少ないコードです。

Date start;
start.month = 3;
start.day = 5;
start.year = 5;

Date finish;
start.month = 3;
start.day = 5;
start.year = 5;

Information arguments("Susan Jones", start, finish, 15, 58);

また

Information arguments("Susan Jones", {3,5,5}, {3,5,5}, 15, 58);
于 2013-03-11T19:41:30.667 に答える