首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++头文件有关问题

2012-06-12 
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运行,是可以的

热点排行