读书人

invalid conversion from #039;const char

发布时间: 2012-09-05 15:19:34 作者: rapoo

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;      } 

读书人网 >C++

热点推荐