今天在运行如下代码时,遇到了这个错
没有找到接受“std::istream”类型的左操作数的运算符
#include <iostream>
#include <string>
using namespace std;
class People
{
private:
string name;
int age;
public:
friend ostream & operator <<(ostream &output, const People &P)
{
output <<"Information:\n"<< "Name:" << P.name << "\n" << "Age:" << P.age;
return output;
}
friend istream &operator>>(istream &input, const People &P)
{
cout << "Name:";
input >> P.name;
cout << "Age:";
input>> P.age;
return input;
}
};
int main()
{
People D;
cin >> D;
cout << D;
}
原因就是以下这句使用了const,const修饰后值是不能改变的,自然不能用cin>>来输入。所以应该去掉const
friend istream &operator>>(istream &input, const People &P)
{
cout << "Name:";
input >> P.name;
cout << "Age:";
input>> P.age;
return input;
}
就可以正常运行~
#include <iostream>
#include <string>
using namespace std;
class People
{
private:
string name;
int age;
public:
friend ostream & operator <<(ostream &output, const People &P)
{
output <<"Information:\n"<< "Name:" << P.name << "\n" << "Age:" << P.age;
return output;
}
friend istream &operator>>(istream &input, People &P)
{
cout << "Name:";
input >> P.name;
cout << "Age:";
input>> P.age;
return input;
}
};
int main()
{
People D;
cin >> D;
cout << D;
}
此外,出现
没有找到接受“std::string”类型的左操作数的运算符
的错误,要看看头文件是不是加了
#include <string>
注意不是string.h!