[英]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.