create an array of class objects in c++

21,255

Solution 1

Many problems:

  1. Missing semicolon on the closing brace of the class, as maverik noted
  2. Use of string without using namespace std; or using std::string; (or #include <string> for that matter)
  3. Ditto #2 for cin and cout (and <iostream>)
  4. d[i]-> is wrong; d[i] is a contact&, not a contact*, so use . instead of ->
  5. name= NULL; and address= NULL; are nonsensical -- string is not a pointer type, and already default-constructs to empty
  6. phonenumber= NULL; is technically valid, but still 'wrong'

Also, good lord, use some whitespace in your code.

EDIT (in response to comment): Your constructor should look like:

contact() : phonenumber() { }

Solution 2

You forget the ;

class contact {
    ...
};  // <- ; is neccessary
Share:
21,255

Related videos on Youtube

Frustrated Coder
Author by

Frustrated Coder

The world is too large to end

Updated on July 09, 2022

Comments

  • Frustrated Coder
    Frustrated Coder almost 2 years

    Hi guys I want to make an array of class objects....so that I can keep on creating as many objects during runtime as and when required I wrote the following code, but its giving me error:

    class contact{
    public:
        string name;//ALL CLASS VARIABLES ARE PUBLIC
        int phonenumber;
        string address;
    
        contact(){//Constructor
            name= NULL;
            phonenumber= NULL;
            address= NULL;
        }
    
        void input_contact_name(string s){//function to take contact name
            name=s;
        }
        void input_contact_number(int x){//function to take contact number
            phonenumber=x;
        }
        void input_contact_address(string add){//function to take contact address
            address=add;
        }
    }
    
    int main(){
        contact *d;
        d= new contact[200];
        string name,add;
        int choice;//Variable for switch statement
        int phno;
        static int i=0;//i is declared as a static int variable
        bool flag=false;
        cout<<"\tWelcome to the phone Directory\n";//Welcome Message
        cout<<"Select :\n1.Add New Contact\n2.Update Existing Contact\n3.Delete an Existing Entry\n4.Display All Contacts\n5.Search for a contact\n6.Exit PhoneBook\n\n\n";//Display all options
        cin>>choice;//Input Choice from user
        while(!flag){//While Loop Starts
            switch(choice){//Switch Loop Starts
            case 1:
                cout<<"\nEnter The Name\n";
                cin>>name;
                d[i]->name=name;
                cout<<"\nEnter the Phone Number\n";
                cin>>phno;
                d[i]->input_contact_number(phno);
                cout<<"\nEnter the address\n";
                cin>>add;
                d[i]->input_contact_address(add);
                i++;
                flag=true;
            }
        }
        return 0;
    }
    

    Please can some one out figure out the reason?? Thanks in advance

  • Frustrated Coder
    Frustrated Coder about 13 years
    so what should assign these to in the constrictor?\
  • ildjarn
    ildjarn about 13 years
    @Frustrated Coder : Edited to answer that.
  • Frustrated Coder
    Frustrated Coder about 13 years
    phonenumber is a variable not a function
  • ildjarn
    ildjarn about 13 years
    @Frustrated Coder : Yep, but that's not a function call, that's a constructor initialization list + value-initialization. But, if it makes more sense to you, contact() : phonenumber(0) { } is fine too.

Related