我已經瀏覽了許多對此處其他人的回覆以及YouTube視頻,試圖找出我做錯了什麼。C++中的錯誤返回值與函數類型不匹配
我有一個定義的私有類成員作爲一個頭文件:
char *m_sName[64];
和公共構造和析構函數的重載的構造函數。
而在我的cpp文件這樣的:
Character::Character()
{
*m_sName = NULL;
}
Character::Character(char *name, int cl, int al, int hp, int str, int dex, int con, int itl, int wis, int chr)
{
*m_sName = new char[strlen(name) + 1];
strcpy(*m_sName, name);
}
void Character::setName(char *name)
{
*m_sName[] = (char *)malloc(strlen(name) + 1); // Error expected a
//expression
strcpy(*m_sName, name);
}
void Character::getName(char *name)
{
char *name = new char[strlen(*m_sName) + 1];
strcpy(name, *m_sName);
return name; // Error here return value type does not match function type
}
Character::~Character()
{
delete [] *m_sName;
}
現在,我明白,SNAME是一個數組,對方只是一個char。但即使我將它改爲雙倍,我也遇到同樣的問題。 setName中的其他問題我不知道如何解決它...
你試圖返回一個返回類型爲void的函數。刪除返回語句。 另外,刪除大部分代碼並使用std :: string和std :: vector。如果你繼續這樣下去,你會遇到很多麻煩。最後,如果你通過教程或書籍來學習C++,請轉換你的文獻。沒有人應該再這樣寫代碼了。 – Jodocus
對你的進一步的問題,因爲我顯然是新的,這是一個任務,如果他的主要不工作,那麼我會得到一個0.將使這些變化導致他不工作? –
「他的主」是什麼意思? – melpomene