0

H、これはエラー object is undeclared first use this function を与えている私のコードですが、すべて問題ありませんが、なぜこれが起こっているのですか? そのクラスはメイン関数には表示されず、エラーが発生します。

 #include <iostream.h>
 #include <stdio.h>
 #include <conio.h>
 using namespace std;
 class time
 {
  int min;
  int sec;
  int hour;

  public:
         time()
         {
               cout << "uninitialized constructor " << endl << endl;
               min = 0;
               sec = 0 ;
               hour = 0;
         }
         time(int m, int s, int h)
         {
                  min= m;
                  sec = s;
                  hour = h;
         }
         void display()
         {
              cout << min << ":" << sec <<":" << hour ;
         }
         void add(time t1, time t2)
         {
              int sece = t1.sec+t2.sec;
              int mint = t1.min + t2.min;
              int hours = t1.hour + t2.hour;

              time t4(sece , mint, hours);

         }
 };

 int main(void)
 {
  time t1(23, 45,11);
  time t2(11,59,59);
  time t3;
  t3.add(t1,t2);
  t3.display();
  getch();
 }

第二に、このコード行は何を意味しますか?

time(int h,int m,int s):hrs(h),mins(m),secs(s){}

これを次のように置き換えることはできますか: time(int m, int s, int h) { min= m; 秒 = s; 時間 = h; }

4

4 に答える 4

1

クラス名の選択はstd::time、標準ライブラリで名前が付けられた関数が既に存在するため、少し残念です。別の名前を選択するか、名前空間の使用を検討してください。

2番目の質問について:

メンバ変数を初期化するこの方法は、イニシャライザ リストと呼ばれ、推奨される使用方法です。特に、プリミティブ データ型ではなくオブジェクトを扱う場合、オブジェクトのコンストラクタが 1 回だけ呼び出されるようにするのは、イニシャライザ リストだけです。そうしないと、デフォルトのコンストラクターが暗黙的に呼び出され、コンストラクター本体内でオブジェクトを 2 回初期化する場合にのみ使用されます。

于 2013-09-14T20:29:29.873 に答える