Question: H, 
Here is my code that is giving error object is undeclared first use this function although every thing is alright, why is this happening so? that class is not visible to main function and its giving errors.

```
 #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();
 }

```

secondly, what does this code line means?

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

```

could it be replaced by this:
 time(int m, int s, int h)
 {
 min= m;
 sec = s;
 hour = h;
 }

Answer: 
show the exact error.

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

```

That's an **initializer list**.

```
// could it be replaced by this:
time(int m, int s, int h) { min= m; sec = s; hour = h; } 

```

No, because you changed the argument order. 

But `time(int h,int m,int s):hrs(h),mins(m),secs(s){}` is similar to 

```
time(int h, int m, int s) { hour = h; min = m; secs = s; }

```
Your code will not print correct output if you want t3 to really have the sum of t1,t2. If the code is actually what is required, then it is fine.

But, if add really needs to add, then don't create another local variable t4 in the function. Rather modify the member variables like this:

```
 void add(Time t1, Time t2)
 {
     sec = t1.sec+t2.sec;
     min = t1.min + t2.min;
     hour = t1.hour + t2.hour;
     min+=sec/60; sec%=60;
     hour+=min/60; min%=60;
 }

```