title: C++ "call of overloaded function is ambiguous" programming error
body: <p>I am facing "ambiguous call error" in my code and i am unable to detect it I think the error is in addressBookType class but i would be able to detect it!</p>
  
  <p>I have to repost this question due to these errors?
  "</p>
  
  <pre><code>Compiler: MinGW GCC 4.6.2 32-bit
  Executing  g++.exe...
  g++.exe "D:\New Folder\Cpp\Assignment 4\q4\main.cpp" -o "D:\New Folder\Cpp\Assignment 4\q4\main.exe"    -I"E:\Program Files\Dev-Cpp\MinGW32\include"  -I"E:\Program Files\Dev-Cpp\MinGW32\include"   -L"E:\Program Files\Dev-Cpp\MinGW32\lib" -L"E:\Program Files\Dev-Cpp\MinGW32\lib" -static-libstdc++ -static-libgcc 
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp: In constructor 'addressBookType::addressBookType()':
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:318:34: error: call of overloaded 'addressType()' is ambiguous
  
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:318:34: note: candidates are:
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:104:1: note: addressType::addressType(std::string, std::string, std::string, std::string)
  
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:88:3: note: addressType::addressType()
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:318:34: error: call of overloaded 'extPersonType()' is ambiguous
  
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:318:34: note: candidates are:
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:168:1: note: extPersonType::extPersonType(std::string, std::string)
  D:\New Folder\Cpp\Assignment 4\q4\main.cpp:154:3: note: extPersonType::extPersonType()
  
  Execution terminated
  </code></pre>
  
  <p>Here is my code:</p>
  
  <pre><code>#include&lt;iostream&gt;
  #include&lt;cstdlib&gt;
  #include&lt;fstream&gt;
  #include&lt;string&gt;
  
  using namespace std;
  
  //////////////////////////////"personType" is from D.S Malik Course Website
  ////////////***Class person Start
  
  
  class personType
  {
  public:
       void print() const;
         //Function to output the first name and last name
         //in the form firstName lastName.
  
  
      void setName(string first, string last);
        //Function to set firstName and lastName according 
        //to the parameters.
        //Postcondition: firstName = first; lastName = last
  
      string getFirstName() const;
        //Function to return the first name.
        //Postcondition: The value of firstName is returned.
  
      string getLastName() const;
        //Function to return the last name.
        //Postcondition: The value of lastName is returned.
  
      personType(string first, string last);
        //Constructor
        //Sets firstName and lastName according to the parameters.
        //The default values of the parameters are null strings.
        //Postcondition: firstName = first; lastName = last  
  
   private:
      string firstName; //variable to store the first name
      string lastName;  //variable to store the last name
  };
  /////////Class person End***///////////
  // IMPLEMENTATION OF "PersonType" CLASS  //
  
  ///////////////// IMP START ////////////////////
  personType::personType(string first="",string last=""){
  
  }
  
  void personType::setName(string first,string last){
      firstName=first;
      lastName=last;
  
  }
  
  string personType::getFirstName() const{
  
  return firstName;
  }
  
  string personType::getLastName () const{
  return lastName;
  }
  
  void personType::print() const{
      cout&lt;&lt;firstName&lt;&lt;" "&lt;&lt;lastName&lt;&lt;endl;
  }
  ////////////////// IMP END ////////////////////
  
  
  
  /////////////////////////////////////////////////////////////////////////////////////////////
  
  
  ////////***class addressType Start
  
  class addressType{
  
  
      private:
      string stAddress;
      string city;
      string state;
      string zipcode;
  
      public:
          addressType();
          addressType(string,string,string,string);
          void setAddress(string);
          string getAddress();
          void setCity(string);
          string getCity();
          void setState(string);
          string getState();
          void setZipcode(string);
          string getZipcode();
  
  };
  
  // IMPLEMENTATION OF "addressType" CLASS  //
  
  ///////////////// IMP START ////////////////////
  addressType::addressType(string=" ",string=" ",string=" ",string=" "){
  
  }
  
  void addressType::setAddress(string addr){
      stAddress=addr;
  }
  
  string addressType::getAddress(){
      return stAddress;
  }
  
  void addressType::setCity(string cit){
      city=cit;
  }
  
  string addressType::getCity(){
      return city;
  }
  
  void addressType::setState(string sta){
      state=sta;
  }
  
  string addressType::getState(){
      return state;
  }
  
  void addressType::setZipcode(string zip){
      zipcode=zip;
  }
  
  string addressType::getZipcode(){
      return zipcode;
  }
  ///////////////// IMP END ////////////////////
  
  //////////class addressType End***
  /////////////////////////////////
  
  
  //////////////////////////////////
  //////***class extPersonType Start
  class extPersonType {
  
      private:
          string relation;
          string phNo;
  
      public:
          extPersonType();
          extPersonType(string,string);
          void setRelation(string);
          string getRelation();
          void setphNo(string);
          string getphNo();
  
  
  };
  
  
  // IMPLEMENTATION OF "extPersonType" CLASS   //
  ///////////////// IMP START ////////////////////
  
  extPersonType::extPersonType(string =" " ,string = " "){
  
  }
  
  void extPersonType::setRelation(string rel){
      relation=rel;
  }
  
  string extPersonType::getRelation(){
      return relation;
  }
  
  void extPersonType::setphNo(string ph){
      phNo=ph;
  }
  
  string extPersonType::getphNo(){
      return phNo;
  }
  
  ///////////////// IMP END ////////////////////
  //////////class extPersonType End***
  
  ///////////////////////////////////////////////////////////////////////////////////////////
  
  
  //////////////////////////////"dateType" is from D.S Malik Course Website
  ////////***class DateType Start
  
  class dateType
  {
  public:
      void setDate(int month, int day, int year);
        //Function to set the date.
        //The member variables dMonth, dDay, and dYear are set 
        //according to the parameters.
        //Postcondition: dMonth = month; dDay = day;
        //               dYear = year
  
      int getDay() const;
        //Function to return the day.
        //Postcondition: The value of dDay is returned.
  
      int getMonth() const;
        //Function to return the month.  
        //Postcondition: The value of dMonth is returned.
  
      int getYear() const;
        //Function to return the year.     
        //Postcondition: The value of dYear is returned.
  
      void printDate() const;
        //Function to output the date in the form mm-dd-yyyy.
  
      dateType(int month = 1, int day = 1, int year = 1900);
        //Constructor to set the date
        //The member variables dMonth, dDay, and dYear are set 
        //according to the parameters.
        //Postcondition: dMonth = month; dDay = day; dYear = year;
        //               If no values are specified, the default 
        //               values are used to initialize the member
        //               variables.
  
  private:
      int dMonth; //variable to store the month
      int dDay;   //variable to store the day
      int dYear;  //variable to store the year
  };
  //////////class dateType End***
  /////////////////////////////////
  
  
  // IMPLEMENTATION OF "DateType" CLASS   //
  ///////////////// IMP START ////////////////////
  
  void dateType::setDate(int month, int day, int year)
  {
      dMonth = month;
      dDay = day;
      dYear = year;
  }
  
  int dateType::getDay() const 
  {
      return dDay;
  }
  
  int dateType::getMonth() const 
  {
      return dMonth;
  }
  
  int dateType::getYear() const 
  {
      return dYear;
  }
  
  void dateType::printDate() const
  {
      cout &lt;&lt; dMonth &lt;&lt; "-" &lt;&lt; dDay &lt;&lt; "-" &lt;&lt; dYear;
  }
  
      //Constructor with parameters
  dateType::dateType(int month, int day, int year) 
  { 
      dMonth = month;
      dDay = day;
      dYear = year;
  }
  //////////////// IMP END /////////////////////
  
  ////////////////////////////////////////////////////////////////////////////////
  
  
  //////***class addressBookType Start
  
  class addressBookType {
  
  private:
      string FirstName; //variable to store the first name
      string LastName;  //variable to store the last name
      string StAddress;
  
      string City;
      string State;
      string Zipcode; 
      string Relation;
      string PhNo;
      int DMonth; //variable to store the month
      int DDay;   //variable to store the day
      int DYear;  //variable to store the year
  
  protected:
  
      addressType obj1;
      dateType obj2;
      extPersonType obj3;
  
  public:
      addressBookType();
      static int count;
      void loadData(addressBookType *&amp;ptr);
  
  };
  
  //////////class addressType End***
  /////////////////////////////////
  
  // IMPLEMENTATION OF "addressBookType" CLASS   //
  ///////////////// IMP START ////////////////////
  addressBookType::addressBookType(){
  
  }
  void addressBookType::loadData(addressBookType *&amp;ptr){
  
      ifstream fin;
      ifstream fout;
  
      string tempName;
      cout&lt;&lt;"Enter file name:"&lt;&lt;endl;
  
  
              if(!fin){
  
                  cout&lt;&lt;"Cannot open the image file : "&lt;&lt;endl;
                  cout&lt;&lt;"Input Failure"&lt;&lt;endl;
                  system("pause");
  
  
              }
  
              else{
  
                  for(int i=0;!fin.eof();i++){
  
                      fin&gt;&gt;FirstName;
                      fin&gt;&gt;LastName;
                      fin&gt;&gt;DDay;
                      fin&gt;&gt;DMonth;
                      fin&gt;&gt;DYear;
                      getline(fin,StAddress);
                      getline(fin,City);
                      getline(fin,State);
                      fin&gt;&gt;Zipcode;
                      fin&gt;&gt;PhNo;
                      fin&gt;&gt;Relation;
  
                      cout&lt;&lt;FirstName&lt;&lt;LastName&lt;&lt;DDay&lt;&lt;DMonth&lt;&lt;DYear&lt;&lt;StAddress&lt;&lt;City&lt;&lt;State&lt;&lt;Zipcode&lt;&lt;PhNo&lt;&lt;Relation&lt;&lt;endl;
  
                  }
  
              }   
  
  }
  
  int main (){
  
       addressBookType *ptr;
       addressBookType obj;
       ptr=new addressBookType[500];
       obj.loadData(ptr);
  
       system("pause");
       return(0);
  }
  
  ~Please help
  </code></pre>