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: 
Your choice of the class name is a bit unfortunate, since there is already a function named [`std::time`](http://en.cppreference.com/w/cpp/chrono/c/time) in the standard library, so just choose a different name or consider using namespaces.

Concerning the second question:

This way of initializing the member variables is called **[initializer list](https://stackoverflow.com/questions/4589237/c-initialization-lists)** and is the prefered way to use. Especially when dealing with objects instead of primitive data types, only the initializer list will make sure that your objects' constructors are called only once. Otherwise, the default constructor would be called implicitly, only for you to initialize the objects a second time inside the constructor body.
As for your second question -

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

```

This line uses **MIL** - [Member initialization list](https://stackoverflow.com/questions/7665021/c-member-initialization-list), as for use/not use - [Why should I prefer to use member initialization list?](https://stackoverflow.com/questions/926752/why-should-i-prefer-to-use-member-initialization-list)

With some small modifications, you can start using this.

please provide the compilation error for the first question, without seeing the error, i can see one main reason why build might fail. the language already defines a type named `time`, so you may want to change the name.