class Person
{
public:
Person(){};
~Person(){};
friend ostream& operator<<(ostream& os, const Person& p)
{
os << "本人是" << p.name << ", 今年" << p.age << "身高"
<< p.tall << ",体重" << p.weight << ".\n";
return os;
}
friend istream& operator>>(istream& is, const Person& p)
{
is >> p.name;
return is;
}
private:
string name;
int age;
int tall;
int weight;
};
出错信息:
cannot convert ‘p.Person::name’ (type ‘const string {aka const std::basic_string<char>}’) to type ‘signed char*’
is >> p.name;
解决方案:4分
>>运算符的第二个参数,不能为const
解决方案:4分
重载的插入运算符的第二个参数不能为const
const表示在这个函数内不可以修改p的内容
const表示在这个函数内不可以修改p的内容
解决方案:4分
包含头文件:#include <string>
friend istream& operator>>(istream& is, const Person& p) 这句不要const,否则无法修改
friend istream& operator>>(istream& is, const Person& p) 这句不要const,否则无法修改
解决方案:4分
重载>>要注意第二个参数不能为const对象,原因是>>是写入,会修改对象。
所以吧,一定得清楚什么时候需要const,什么时候不需要const,不是随便用的。
所以吧,一定得清楚什么时候需要const,什么时候不需要const,不是随便用的。
解决方案:4分
friend istream& operator>>(istream& is, Person& p) //去掉const
{
is >> p.name;
return is;
}
{
is >> p.name;
return is;
}