2012-03-14 57 views
0

錯誤我收到從這個代碼「爲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; 
} 

有人可以幫我嗎?

回答

2

返回類型應該是const char*以及:

const char* get_name () const; 

這是因爲在一個const成員函數,this指針變爲一個常量,其結果是類的每個成員成爲常量的結果,這意味着name,它被聲明爲char[N],在const成員函數中變成const char[N]const char[N]可以轉換成只有const char*,因此你需要使返回類型const char*

0

你正在返回一個非const指針。你想返回一個const char:

// in account.h 
const char* get_name () const; 

//in account.cxx 
const char* account::get_name () const 
{ 
    return name; 
} 

的原因是,你的方法聲明爲const,但你返回指針可以用來修改名稱,這將是一個違反了法的const的承諾。

0

由於get_name是一個const方法,隱式對象的所有成員在該方法的上下文中都是const。通過將名稱作爲char *返回,您將從名稱中刪除const限定符。你可以返回const char *。