const类编译错误

时间:2012-03-14 01:53:58

标签: c++ const

我收到此错误从此代码无效转换为'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;
}

有人可以帮帮我吗?

3 个答案:

答案 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 *。