错误:从'const char *'到'int'的无效转换

时间:2020-04-04 09:31:02

标签: c++

我正在尝试将某人的出生日期,月份和年份添加到课堂上。截至目前,我正试图包括出生日期,有很多错误,设法消除了大多数错误,但我仍然遗漏了这个错误(起初,我在同一天,月份和出生年份,但我有很多错误,所以我决定尝试修复其中至少一个)。在代码中,我还将生日作为一个字符,并且可以正常工作,但我需要这些值以后才能使用它们。

#include <iostream>
#include <cstring>
using namespace std;
class Persoana
{
private:
    char nume[20];
    char data_nastere[20];
    int zi;
public:
    Persoana(char *nume="", char *data_nastere="", int zi="");//this is where i have the error
    void setNume(char *nume);
    char* getNume();
    void setDataNastere(char *data_nastere);
    char* getDataNastere();
    void setZi(int zi);
    int getZi();
    void afisare();
};
Persoana::Persoana(char *nume, char *data_nastere, int zi)
{
    setNume(nume);
    setDataNastere(data_nastere);
    setZi(zi);
}
void Persoana::setNume(char *nume)
{
    strcpy(this->nume, nume);
}
char* Persoana::getNume()
{
    return nume;
}
void Persoana::setDataNastere(char *data_nastere)
{
    strcpy(this->data_nastere, data_nastere);
}
char* Persoana::getDataNastere()
{
    return data_nastere;
}
void Persoana::setZi(int zi)
{
    this->zi=zi;
}
int Persoana::getZi()
{
    return zi;
}
void Persoana::afisare()
{
    cout<<"Nume: "<<nume<<endl;
    cout<<"Data nasterii este: "<<data_nastere<<endl<<endl;
    cout<<zi<<endl;
}
int main()
{
    Persoana p[] = {Persoana("Calin Dorina", "12 02 2000", 12), Persoana("Mihaela Banu", "25 04 2001", 25)};
    p[0].afisare();
    //p[1].afisare();
}

2 个答案:

答案 0 :(得分:0)

您尝试将一个指向文字字符串的指针(它是指向const char的指针,该字符串在此字符串中是首字母)分配给构造函数z中的整数属性int zi=""。 C ++尚未默认从const char*转换为int。您应该为整数属性使用整数默认值。

答案 1 :(得分:0)

你们当中有人说要声明int zi = 0,这就是正确的答案。我尝试过这样做,但是在这里声明了私有变量。感谢您的帮助!

如果其他人有这个问题,这里应该是这样:

Persoana(char * nume =“,char * data_nastere =”“,int zi = 0);