crear una matriz de objetos de clase en c++

Hola chicos quiero hacer un array de objetos de la clase….así que puedo mantener en la creación de la mayor cantidad de objetos en tiempo de ejecución cuando sea necesario
Escribí el siguiente código, pero su me da 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;
}

Por favor, ¿alguien por averiguar la razón??
Gracias de antemano

  • aquí está el error, el código ha sido una sangría
  • ¿cuál es el error que está recibiendo? ha considerado el uso de std::vector?
  • newpro.cpp: En el constructor de contacto: contact()’: newpro.cpp:16: error: error de sobrecarga ambigua para » operador=’ en ‘((contacto*)este)->contacto:nombre = 0’ newpro.cpp: En el ámbito global: newpro.cpp:7: error: nuevos tipos no pueden ser definidas en un tipo de retorno newpro.cpp:7: nota: (quizás un punto y coma después de la falta de la definición de ‘contacto’) newpro.cpp:32: error: dos o más tipos de datos en la declaración de ‘principal’

2 Kommentare

  1. 6

    Muchos problemas:

    1. Falta el punto y coma en la llave de cierre de la clase, como maverik señaló
    2. Uso de string sin using namespace std; o using std::string; (o #include <string> para esa materia)
    3. Ídem #2 para cin y cout (y <iostream>)
    4. d[i]-> está mal; d[i] es un contact&, no contact*, a fin de utilizar . en lugar de ->
    5. name= NULL; y address= NULL; son absurdas — string no es un tipo de puntero, y ya por defecto-construcciones vacías
    6. phonenumber= NULL; es técnicamente válido, pero todavía ‘mal’

    También, buen señor, el uso de algunos espacios en blanco en el código.

    EDITAR (en respuesta al comentario): el constructor debe verse como:

    contact() : phonenumber() { }
    • entonces, ¿qué debe asignar estos a en el constrictor?\
    • Coder : Editado para responder a eso.
    • número de teléfono es una variable que no es una función
    • Coder : Sí, pero eso no es una llamada a una función, que es un constructor de la lista de inicialización + valor de inicialización. Pero, si es que tiene más sentido para usted, contact() : phonenumber(0) { } está bien también.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea