Id返回1退出状态

时间:2015-03-12 03:01:51

标签: c++ class

当我尝试编译时会弹出此错误(对不起它的西班牙文)

#include <iostream>
#include <string>

using namespace std;

//////////////////////////////
// Contacto

class contacto
{
    private:
        string nombre;
        string apellido;
        string numTelf;
        string numCel;
        string correo;
        string ciudad;
        string pais;
        string grupo;
    public:
        contacto (string nom, string apel, string tel, string cel, string cor, string ciu, string pai, string grup)
        {
        nombre = nom;
        apellido = apel;
        numTelf = tel;
        numCel = cel;
        correo = cor;
        ciudad = ciu;
        pais = pai;
        grupo = grup;       
        }
        void getContacto (string nom, string apel)
        {

        }
};

class agenda
{
    private:
        contacto arreglo[40];
    public:
    agenda();
        void setContacto(int n)
        {
        }
};



int main ()
{
int op, N;
agenda agen;

    cout<<"N:";
    cin>>N;
    agen.setContacto(N);        


system("pause");
return 0;
}

我知道它与对象声明和议程类的构造函数有关,我试图擦除它但是生病只是给我其他错误,我只需要访问agend.setContacto(N);但它一直给我错误,并且由于Agenda类只有一个对象数组,我不知道如何创建一个有效的构造函数。

我会把课程留在这里,以便更容易看到:

班级联络人:

class contacto
{
    private:
        string nombre;
        string apellido;
        string numTelf;
        string numCel;
        string correo;
        string ciudad;
        string pais;
        string grupo;
    public:
        contacto (string nom, string apel, string tel, string cel, string cor, string ciu, string pai, string grup)
        {
            nombre = nom;
            apellido = apel;
            numTelf = tel;
            numCel = cel;
            correo = cor;
            ciudad = ciu;
            pais = pai;
            grupo = grup;
        }
        void setContacto (string nom, string apel, string tel, string cel, string cor, string ciu, string pai, string grup)
        {
            nombre = nom;
            apellido = apel;
            numTelf = tel;
            numCel = cel;
            correo = cor;
            ciudad = ciu;
            pais = pai;
            grupo = grup;           
        }
        void getContacto (string nom, string apel)
        {

        }
};
课程议程:

class agenda
{
    private:
        contacto arreglo[40];
    public:
    agenda();
        void setContacto(int n)
        {
};

编辑:弹出的错误是

  

[链接器错误]未定义对`agenda :: agenda()'

的引用      

ld返回1退出状态

EDIT2:contacto类只需要一个用于Agenda类的空构造函数来初始化数组

1 个答案:

答案 0 :(得分:0)

声明一个构造函数时,还应该声明默认(空)构造函数。

class contacto中,您必须有一个空的构造函数,以便在contacto arreglo[40];中声明数组class agenda

因此,请将以下内容添加到class contacto中的公开部分:

contacto(){
/*you can init members...*/  

}

class agenda中,如果你声明了一个功能并使用它,你必须实现它。在行agenda agen;

中使用main的默认构造函数

因此,如果您声明它,则必须使用{}来实现它。如果你没有声明,那么你已经得到了默认值,因为没有其他构造函数。