⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_65789.htm

📁 vc
💻 HTM
字号:
<p>
序号:65789 发表者:everfly 发表日期:2003-12-19 14:41:56
<br>主题:关于 &lt;&lt;的第一种重载版本 的问题
<br>内容:&lt;&lt;的第一种重载版本<BR>我是这样做的,在类里面声明friend void operator&lt;&lt; (ostream &amp; os, const Time &amp; t );<BR>然后象下面一样重载:<BR>void operator&lt;&lt; (ostream &amp; os, const Time &amp; t )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;os &lt;&lt; t.hours &lt;&lt; &#34; hours, &#34; &lt;&lt; t.minutes &lt;&lt; &#34; minutes&#34;;<BR>}<BR><BR>为什么出现错误呢? 
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:everfly 回复日期:2003-12-19 15:00:30
<br>内容:贴上原代码如下:<BR>// mytime0.h -- Time class before operator overloading<BR>#ifndef MYTIME0_H_<BR>#define MYTIME0_H_<BR>#include &lt;iostream&gt;<BR>using namespace std;<BR><BR>class Time{<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;int hours;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int minutes;<BR><BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time (int h,int m = 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;void AddMin (int m );<BR>&nbsp;&nbsp;&nbsp;&nbsp;void AddHr (int h );<BR>&nbsp;&nbsp;&nbsp;&nbsp;void Reset (int h = 0,int m = 0 );<BR>&nbsp;&nbsp;&nbsp;&nbsp;// + operator overloading<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time operator+ (const Time &amp; t) const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time operator- (const Time &amp; t) const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time operator* (double n) const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;void Show () const;<BR>&nbsp;&nbsp;&nbsp;&nbsp;friend Time operator* (double m, const Time &amp; t )<BR>&nbsp;&nbsp;&nbsp;&nbsp;{return t * m;} // inline definition<BR>&nbsp;&nbsp;&nbsp;&nbsp;friend void operator&lt;&lt; (ostream &amp; os, const Time &amp; t);<BR>};<BR>#endif<BR><BR><BR><BR><BR>// mytime0.cpp -- implement Time methods<BR>#include &#34;mytime0.h&#34;<BR><BR>Time::Time()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hours = minutes = 0;<BR>}<BR><BR>Time::Time(int h, int m )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hours = h;<BR>&nbsp;&nbsp;&nbsp;&nbsp;minutes = m;<BR>}<BR><BR>void Time::AddMin(int m )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;minutes += m;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hours += minutes / 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;minutes %= 60;<BR>}<BR><BR>void Time::AddHr(int h )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hours += h;<BR>}<BR><BR>void Time::Reset(int h, int m )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hours = h;<BR>&nbsp;&nbsp;&nbsp;&nbsp;minutes = m;<BR>}<BR><BR>Time Time::operator+ (const Time &amp; t ) const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time sum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;sum.minutes = minutes + t.minutes;<BR>&nbsp;&nbsp;&nbsp;&nbsp;sum.hours = hours + t.hours + sum.minutes / 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;sum.minutes %= 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return sum;<BR>}<BR><BR>Time Time::operator- (const Time &amp; t ) const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time diff;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int tot1,tot2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tot1 = t.minutes + 60 * t.hours;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tot2 = minutes + 60 * hours;<BR>&nbsp;&nbsp;&nbsp;&nbsp;diff.minutes = (tot2 - tot1) % 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;diff.hours&nbsp;&nbsp; = (tot2 - tot1) / 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return diff;<BR>}<BR><BR>Time Time::operator* (double mult) const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;long totalminutes = hours * mult * 60 + minutes*mult;<BR>&nbsp;&nbsp;&nbsp;&nbsp;result.hours = totalminutes / 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;result.minutes = totalminutes % 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return result;<BR>}<BR>/*<BR>Time operator* (double mult, const Time &amp; t )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;long totalminutes = t.hours * mult * 60 + t.minutes * mult;<BR>&nbsp;&nbsp;&nbsp;&nbsp;result.hours = totalminutes / 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;result.minutes = totalminutes % 60;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return result;<BR>}<BR>*/<BR>void Time::Show () const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; hours &lt;&lt; &#34; hours, &#34; &lt;&lt; minutes &lt;&lt; &#34; minutes &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; endl;<BR>}<BR><BR>void operator&lt;&lt; (ostream &amp; os, const Time &amp; t)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;os &lt;&lt; t.hours &lt;&lt; &#34; hours, &#34; &lt;&lt; t.minutes &lt;&lt; &#34; minutes&#34;;<BR>}<BR><BR><BR><BR><BR><BR>// usetime0.cpp -- use first draft of Time class<BR>// compile usetime0.cpp amd mytime0.cpp together<BR>#include &lt;iostream&gt;<BR>#include &#34;mytime0.h&#34;<BR>using namespace std;<BR><BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time A;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time B(5,40);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Time C(2,55);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;A = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;A.Show ();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;B = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;B.Show();<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;C = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;C.Show();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;A = B.operator + (C);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//A = B + C;&nbsp;&nbsp;&nbsp;&nbsp;// operator+ ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;B + C = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;A.Show();<BR>&nbsp;&nbsp;&nbsp;&nbsp;A = B - C;&nbsp;&nbsp;&nbsp;&nbsp;// operator- ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;B - C = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;A.Show();<BR>&nbsp;&nbsp;&nbsp;&nbsp;A = B * 2.75; // operator* ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;B * 2.75 = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;A.Show();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;A = 2.75 * B; // operator* ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &#34;2.75 * B = &#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;A.Show();<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Cxt_ann 回复日期:2003-12-19 15:31:56
<br>内容:呵呵,是我。<BR>你把头文件:#include &lt;iostream&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using namespace std;<BR>改成:#include &lt;iostream.h&gt;<BR>就没问题了,这是VC的问题,MS对标准支持的不好。<BR>:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:everfly 回复日期:2003-12-19 17:06:45
<br>内容:using namespace std;这个我开始没有去掉,所以出现错误了。呵呵,谢谢指点。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Cxt_ann 回复日期:2003-12-19 17:29:11
<br>内容:呵呵,这是VC6.0的问题,它对标准C++支持的不好
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -