C++头文件问题C/C++ code#include iostream.hclass point{public:int x,ypoint(){x0y0}point(int x
C++头文件问题
C/C++ code#include <iostream.h>class point{public: int x,y; point() { x=0; y=0; } point(int xx,int yy) { x=xx; y=yy; } friend ostream &operator<<(ostream &output,point p); friend istream &operator>>(istream &input,point &p);};ostream &operator<<(ostream &output ,point p){ output<<"x="<<p.x<<" "<<"y="<<p.y<<endl; return output;}istream &operator>>(istream &input,point &p){ cout<<"please input x and y:"; input>>p.x>>p.y; return input;}void main(){ point p(12,3); cout<<p; cin>>p; cout<<p;}
上面这段代码在头文件是#include <iostream.h>的包含下调试无错误,运行也正常。但如果把头文件形式改成#include <iostream> using namespace std 的话,调试后就会提示错误:
C:\Users\Administrator\Desktop\C++练习\输入输出运算符的重载.cpp(34) : error C2593: 'operator <<' is ambiguous
C:\Users\Administrator\Desktop\C++练习\输入输出运算符的重载.cpp(35) : error C2593: 'operator >>' is ambiguous
C:\Users\Administrator\Desktop\C++练习\输入输出运算符的重载.cpp(36) : error C2593: 'operator <<' is ambiguous
为什么会出现这种情况呢 求解。。。感激不尽
[解决办法]因为using namespace std;的原因
这是一个BUG
要用 using std::istream;
using std::ostream;这种形式才能重载流输入和输出运算符
[解决办法]using namespace std; 不是万能的 ,初学为了省事使用,
慢慢的就会发现它的缺
[解决办法]#include <iostream>
using namespace std ;
class point
{public:
int x,y;
point()
{
x=0;
y=0;
}
point(int xx,int yy)
{
x=xx;
y=yy;
}
friend ostream &operator<<(ostream &output,point p);
friend istream &operator>>(istream &input,point &p);
};
ostream &operator<<(ostream &output ,point p)
{
output<<"x="<<p.x<<" "<<"y="<<p.y<<endl;
return output;
}
istream &operator>>(istream &input,point &p)
{
cout<<"please input x and y:";
input>>p.x>>p.y;
return input;
}
void main()
{
point p(12,3);
cout<<p;
cin>>p;
cout<<p;
}
楼主,我按照你的说法修改了你的程序,然后在vc6运行,是可以的