我收到此错误从此代码无效转换为'const char *'到'char *':
// 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;
}
有人可以帮帮我吗?
答案 0 :(得分:2)
返回类型也应为const char*
:
const char* get_name ( ) const;
因为在const成员函数中,this
指针变成了一个const,因此该类的每个成员都变为const,这意味着name
被声明为{{1} },在const成员函数中变为char[N]
。 const char[N]
只能转换为const char[N]
,因此您需要生成返回类型const char*
。
答案 1 :(得分:0)
你正在返回一个非常量指针。您想要返回一个const char:
// in account.h
const char* get_name ( ) const;
//in account.cxx
const char* account::get_name ( ) const
{
return name;
}
原因是你的方法被声明为const,但是你返回的指针可以用来修改name,这将违反方法的const promise。
答案 2 :(得分:0)
由于get_name是一个const方法,因此隐式对象的所有成员在该方法的上下文中都是const。通过将name作为char *返回,您将从名称中删除const限定符。你可以返回const char *。