请教一个小问题,重载<<编译不过

dzc8866 2008-10-27 03:40:29
请教一下,重载<<编译不过,必须声明为友员函数,但是会编译不过,我查了半天也不知道是什么原因,最后无意中修改头文件包含,

#include"iostream.h" //可以编译通过;

#include<iostream> //编译不过;
using namespace std;

( .cpp文件见附件 )

请教一下是编译器的问题还是别的原因,我安装的是VC++.6.0.with.SP6.ISO,感谢大家的解答!
...全文
73 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chlaws 2008-10-27
  • 打赏
  • 举报
回复
v6 本来就对标准支持的不好,大可不必介意,另行换个编译器就可
chun799 2008-10-27
  • 打赏
  • 举报
回复
VC6的问题,以前我也遇到过,贴个链接吧,这里有高手的解答http://topic.csdn.net/u/20080912/22/6692fa5c-55f0-49bd-9b24-b99f1ebbb74d.html
冰山之海 2008-10-27
  • 打赏
  • 举报
回复
代码写得还不错.挺漂亮的
e_sharp 2008-10-27
  • 打赏
  • 举报
回复
VC6的问题
fang100 2008-10-27
  • 打赏
  • 举报
回复
就是编译器的问题。我在2005上完全通过 我曾经做过和你一样的东西 一样一样的。
antss 2008-10-27
  • 打赏
  • 举报
回复
好漂亮
visame 2008-10-27
  • 打赏
  • 举报
回复
VC6的问题吧!
太乙 2008-10-27
  • 打赏
  • 举报
回复
//#include"iostream.h" 

#include <iostream>
using namespace std;

class OpOverClass
{
friend ostream& operator <<(ostream& osObject, const OpOverClass& right)
{
osObject << right.a <<" , " << right.b;

return osObject;
}

friend istream& operator>>(istream& isObject, OpOverClass& right)
{
isObject>> right.a >> right.b;

return isObject;
}


friend bool operator>(const OpOverClass& left,const OpOverClass& right)
{
return (left.a>right.a && left.b>right.b);
}

public:
~OpOverClass() {};

OpOverClass() {};
OpOverClass(int , int);

void printf() const;

OpOverClass operator+(const OpOverClass&) const;
bool operator==(const OpOverClass&) const;
bool operator!=(const OpOverClass&) const;

private:
int a;
int b;
};

//**************************************************************************
// friend Function
//**************************************************************************



//**************************************************************************

OpOverClass::OpOverClass(int tempa,int tempb)
{
a = tempa;
b = tempb;
}

void OpOverClass::printf() const
{
cout <<"a = " <<a <<" , b = " <<b <<endl;
}

OpOverClass OpOverClass::operator+(const OpOverClass& otherObject) const
{
OpOverClass temp;

temp.a = a + otherObject.a;
temp.b = b + otherObject.b;

return temp;
}

bool OpOverClass::operator==(const OpOverClass& right) const
{
return (a==right.a && b==right.b);
}

bool OpOverClass::operator!=(const OpOverClass& right) const
{
return (a!=right.a || b!=right.b);
}

//**************************************************************************
// Function main()
//**************************************************************************
void main()
{
cout <<"Welcome to operator!\n\n" <<flush;

OpOverClass x(1,2);
OpOverClass y(3,4);
OpOverClass z(0,0);

z = x+y;

x.printf();
y.printf();
z.printf();

if(x==y)
{
cout <<"YES!" <<endl;
}
else
{
cout <<"NO!" <<endl;
}
cout<<x<<"\t"<<y<<"\t"<<z;
}
太乙 2008-10-27
  • 打赏
  • 举报
回复
附件呢??
dzc8866 2008-10-27
  • 打赏
  • 举报
回复
//怎么没有看到附件,贴一下代码吧

#include"iostream.h"

//#include<iostream>
//using namespace std;

class OpOverClass
{
friend ostream& operator<<(ostream& , const OpOverClass&);
friend istream& operator>>(istream& , OpOverClass&);

friend bool operator>(const OpOverClass&,const OpOverClass&);

public:
~OpOverClass() {};

OpOverClass() {};
OpOverClass(int , int);

void printf() const;

OpOverClass operator+(const OpOverClass&) const;
bool operator==(const OpOverClass&) const;
bool operator!=(const OpOverClass&) const;

private:
int a;
int b;
};

//**************************************************************************
// friend Function
//**************************************************************************
ostream& operator<<(ostream& osObject, const OpOverClass& right)
{
osObject<< right.a <<" , "<< right.b;

return osObject;
}

istream& operator>>(istream& isObject, OpOverClass& right)
{
isObject>> right.a >> right.b;

return isObject;
}

bool operator>(const OpOverClass& left,const OpOverClass& right)
{
return (left.a>right.a && left.b>right.b);
}
//**************************************************************************

OpOverClass::OpOverClass(int tempa,int tempb)
{
a = tempa;
b = tempb;
}

void OpOverClass::printf() const
{
cout<<"a = "<<a<<" , b = "<<b<<endl;
}

OpOverClass OpOverClass::operator+(const OpOverClass& otherObject) const
{
OpOverClass temp;

temp.a = a + otherObject.a;
temp.b = b + otherObject.b;

return temp;
}

bool OpOverClass::operator==(const OpOverClass& right) const
{
return (a==right.a && b==right.b);
}

bool OpOverClass::operator!=(const OpOverClass& right) const
{
return (a!=right.a || b!=right.b);
}

//**************************************************************************
// Function main()
//**************************************************************************
void main()
{
cout<<"Welcome to operator!\n\n"<<flush;

OpOverClass x(1,2);
OpOverClass y(3,4);
OpOverClass z(0,0);

z = x+y;

x.printf();
y.printf();
z.printf();

if(x==y)
{
cout<<"YES!"<<endl;
}
else
{
cout<<"NO!"<<endl;
}
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧