invalid conversion from ‘const * ‘ to ‘*

场景:invalid conversion from 'const char*' to 'char*',该怎么处理

invalid conversion from 'const char*' to 'char*'
红色那行代码出现报错:invalid conversion from 'const char*' to 'char*'。 请问怎么改呀?为啥出错?
class Person
{
private:
  char name[20];
  int age;
  char gender;
public:
  Person(){}
  void SetName(char *n){strcpy(name,n);}
  void SetAge(int a){age=a;}
  void SetGender(char g){gender=g;}
  char *GetName()const(return name;}
  int GetAge()const{return age;}
  char GetGender()const{return gender;}  
};
void PrintByGender(const vector<Person> &L,char sex)
{
  vector<Person>::const_iterator iter=L.begin();
  for(;iter!=L.end();iter++)
  if((*iter).GetGender()==sex)
  cout<<iter->GetName()<<" "<<iter->GetAge()<<endl;  
}

------解决方案--------------------
C/C++ code

char *GetName()const{return name;} //不是(是{啊

------解决方案--------------------
C/C++ code

将
        char *GetName()const
        {
                return name;
        } 
改为
    const char* GetName()const
    {
        return name;
    }

------解决方案--------------------
关键你这里错在name的定义,你将那么定义成了数组的形式。这是一种const char*的形式。
如果你要是不想在GetName()函数钱加上const 。除非你修改name的定义,将其改成char*类型。
C/C++ code

class Person 
{ 
private: 
    char* name; 
    int age; 
    char gender; 
public: 
    Person(){} 
    void SetName(char *n)
    {
        name = n;
    } 
    void SetAge(int a)
    {
        age=a;
    } 
    void SetGender(char g)
    {
        gender=g;
    } 
    char* GetName()const
    {
        return name;
    } 
    int  GetAge()const
    {
        return age;
    } 
    char GetGender()const
    {
        return gender;
    }
}; 

void PrintByGender(const vector <Person> &L,char sex) 
{ 
    vector <Person>::const_iterator iter=L.begin(); 
    for(;iter!=L.end();iter++) 
        if((*iter).GetGender()==sex) 
            cout <<iter->GetName() <<" " <<iter->GetAge() <<endl;      
}