錯誤我收到從這個代碼「爲const char *」到「字符*」這個錯誤無效轉換:const的彙編類的方法
// in account.h
struct account {
char* get_name () const;
char name[MAX_NAME_SIZE+1];
};
//in account.cxx
char* account::get_name () const
{
return name;
}
有人可以幫我嗎?
錯誤我收到從這個代碼「爲const char *」到「字符*」這個錯誤無效轉換:const的彙編類的方法
// in account.h
struct account {
char* get_name () const;
char name[MAX_NAME_SIZE+1];
};
//in account.cxx
char* account::get_name () const
{
return name;
}
有人可以幫我嗎?
返回類型應該是const char*
以及:
const char* get_name () const;
這是因爲在一個const成員函數,this
指針變爲一個常量,其結果是類的每個成員成爲常量的結果,這意味着name
,它被聲明爲char[N]
,在const成員函數中變成const char[N]
。 const char[N]
可以轉換成只有const char*
,因此你需要使返回類型const char*
。
你正在返回一個非const指針。你想返回一個const char:
// in account.h
const char* get_name () const;
//in account.cxx
const char* account::get_name () const
{
return name;
}
的原因是,你的方法聲明爲const,但你返回指針可以用來修改名稱,這將是一個違反了法的const的承諾。
由於get_name是一個const方法,隱式對象的所有成員在該方法的上下文中都是const。通過將名稱作爲char *返回,您將從名稱中刪除const限定符。你可以返回const char *。