error C2593: 'operator <<' is ambiguous,如何解决
error C2593: 'operator <<' is ambiguous,怎么解决?
我用的是vc6.0。如果把#include <stream>改成#include<iostream.h>并删去using namespace std;就会出现大量错误。怎么解决?
#include <iostream.h>
#include <string>
using namespace std;
class student
{
public:
student(int num1,string nam,char s,int age1,float m,float c,float f):num(num1),sex(s),age(age1),math_score(m),c_score(c), fg_score(f)
{
name=nam;
}
void show()
{
cout<<num<<' '<<name<<' '<<sex<<' '<<age<<' '<<math_score<<' '<<c_score<<' '<<fg_score<<endl;
}
friend ostream& operator <<(ostream&,student&);
friend istream& operator >>(istream&,student&);
int num;
string name;
char sex;
int age;
float math_score,c_score,fg_score;
};
ostream& operator <<(ostream&output,student&stu)
{
output<<stu.num <<' '<<stu.name <<' '<<stu.sex <<' '<<stu.age <<' '<<stu.math_score <<' '<<stu.c_score <<' '<<stu.fg_score <<endl;
return output;
}
istream& operator >>(istream&input,student&stu)
{
input>>stu.num >>stu.name >>stu.sex >>stu.age >>stu.math_score >>stu.c_score>>stu.fg_score ;
return input;
}
int main()
{
student stu[2]={student(1,"wangping",'m',18,89.0,78.9,96.8),student(2,"lihua",'f',19,89.0,67.9,99.0)};
stu[0].show ();
stu[1].show ();
cout<<stu[1];
return 0;
}
------解决思路----------------------
同意楼上的说法。<iostream.h>不是标准C++里面的头文件,而<string>则包含在标准里面,所以删去using namespace std后,类里面的数据成员string name无法明确其类型。
建议把<iostream.h>改成<iostream>,同时头文件不建议用using namespace std,可以把string name改成std::string name
------解决思路----------------------
《C++primer》 命名空间
我用的是vc6.0。如果把#include <stream>改成#include<iostream.h>并删去using namespace std;就会出现大量错误。怎么解决?
#include <string>
using namespace std;
class student
{
public:
student(int num1,string nam,char s,int age1,float m,float c,float f):num(num1),sex(s),age(age1),math_score(m),c_score(c), fg_score(f)
{
name=nam;
}
void show()
{
cout<<num<<' '<<name<<' '<<sex<<' '<<age<<' '<<math_score<<' '<<c_score<<' '<<fg_score<<endl;
}
friend ostream& operator <<(ostream&,student&);
friend istream& operator >>(istream&,student&);
int num;
string name;
char sex;
int age;
float math_score,c_score,fg_score;
};
ostream& operator <<(ostream&output,student&stu)
{
output<<stu.num <<' '<<stu.name <<' '<<stu.sex <<' '<<stu.age <<' '<<stu.math_score <<' '<<stu.c_score <<' '<<stu.fg_score <<endl;
return output;
}
istream& operator >>(istream&input,student&stu)
{
input>>stu.num >>stu.name >>stu.sex >>stu.age >>stu.math_score >>stu.c_score>>stu.fg_score ;
return input;
}
int main()
{
student stu[2]={student(1,"wangping",'m',18,89.0,78.9,96.8),student(2,"lihua",'f',19,89.0,67.9,99.0)};
stu[0].show ();
stu[1].show ();
cout<<stu[1];
return 0;
}
------解决思路----------------------
同意楼上的说法。<iostream.h>不是标准C++里面的头文件,而<string>则包含在标准里面,所以删去using namespace std后,类里面的数据成员string name无法明确其类型。
建议把<iostream.h>改成<iostream>,同时头文件不建议用using namespace std,可以把string name改成std::string name
------解决思路----------------------
《C++primer》 命名空间