簡體   English   中英

構造函數不接受字符 *

[英]Constructor doesn't accept char *

沒有參數的構造函數有效,但另一個無效。 我很絕望,我嘗試了一切

// 標題

 class Etudiant
        {
        private:
            char * name;
            unsigned int age;
            Date *datenaissance;
        public:
            Etudiant();
            Etudiant(char * c,unsigned int,Date&);
            ~Etudiant();
        };

這是我的 .cpp

    Etudiant::Etudiant()
    {
        this->name = new char();
        strcpy(name, "kabil");
        this->age = 18;

    this->datenaissance = new Date();
}

Etudiant::Etudiant(char * c, unsigned int a, Date &d)
{
    this->name = new char();
    strcpy(this->name,c);
    this->age = a;
    this->datenaissance = new Date(d);
}


Etudiant::~Etudiant()
{
    delete[]name;
    name = 0;
}

這是我的主要

int main()
{

    Date d();   
    Etudiant E(),E1("student",15,d);

    system("pause");

}

我應該改變什么?

要將文字字符串傳遞給函數,它必須有一個char const *類型的參數,而不是char * 所以你的構造函數應該有這個原型:

Etudiant(char const * c, unsigned int, Date &);

如上所述,您也沒有分配足夠的內存來復制構造函數中的字符串。 這一行:

this->name = new char();

應該是:

this->name = new char[strlen(c) + 1];

所以你有足夠的內存來執行這個復制操作:

strcpy(this->name, c);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM