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;
}
------解决方案--------------------
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; }