| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2411 人关注过本帖
标题:为什么我的VC不能通过?
只看楼主 加入收藏
隐藏着的某人
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-10-8
收藏
 问题点数:0 回复次数:10 
为什么我的VC不能通过?
这段代码是我从书上抄下来的!但是不能编译通过! 我想了很久! 我用的是vc 6.0 别人用其他编译器就能通过!谁帮我改改让在VC 上也能通过!
#include <iostream>
#include <iomanip>
using namespace std;
class Time{
int hour,minute,second;
public:
void set(int h,int m,int s){hour=h,minute=m,second=s;}
friend Time& operator++(Time& a);
friend Time operator++(Time& a,int);
friend ostream& operator<<(ostream& out,const Time& t);
};
Time& operator++(Time& a){
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute)%60))
a.hour=(a.hour+1)%24;
return a;
}
Time operator++(Time& a,int){
Time t(a);
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute)%60))
a.hour=(a.hour+1)%24;
return t;
}
ostream& operator<<(ostream& out,const Time& t){
out<<setfill('0')<<setw(2)<<t.hour<<":"<<setfill('0')<<setw(2)<<t.minute<<":";
return out<<setw(2)<<t.second<<"\n"<<setfill(' ');
}
int main(){
Time t;
t.set(11,59,58);
cout<<t++;
cout<<++t;
}
搜索更多相关主题的帖子: include public friend 
2006-10-30 12:51
清水香里
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-9-3
收藏
得分:0 
#include <iostream.h>
#include <iomanip.h>

www./www.
2006-10-30 14:06
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
我已经知道早上为什么我的vc7为什么出错了,我使用的是MinGW Developer Studio,我使用Unix的源文件格式vc7不能正确识别,所以出错了,改了一下编码类型OK了。
另外我把代码改了一下,输出结果也正确了

#include <iostream>
#include <iomanip>
using namespace std;
class Time{
int hour,minute,second;
public:
void set(int h,int m,int s){hour=h,minute=m,second=s;}
friend Time& operator++(Time& a);
friend Time operator++(Time& a,int);
friend ostream& operator<<(ostream& out,const Time& t);
};
Time& operator++(Time& a){
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60))
a.hour=(a.hour+1)%24;
return a;
}
Time operator++(Time& a,int){
Time t(a);
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60))
a.hour=(a.hour+1)%24;
return t;
}
ostream& operator<<(ostream& out,const Time& t){
out<<setfill('0')<<setw(2)<<t.hour<<":"<<setfill('0')<<setw(2)<<t.minute<<":";
return out<<setw(2)<<t.second<<"\n"<<setfill(' ');
}
int main(){
Time t;
t.set(11,59,58);
cout<<t++;
cout<<++t;
}

2006-10-30 15:11
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
输出:
11:59:58
12:00:00


2006-10-30 15:13
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
我不清楚vc6能不能通过,很早就不用了

2006-10-30 15:24
子时之龙
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-7-29
收藏
得分:0 

大哥现在是不是在用VC.NET?
偶也在用耶!!
比V6好多了!!!


龙已经出现了! 只因在子时, 人们无法察觉…………
2006-10-30 16:55
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
刚开始用的时候有点不习惯,时间稍长点之后,感觉比vc6进步不少,可惜的是不能完全支持C++标准

2006-10-30 17:27
隐藏着的某人
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-10-8
收藏
得分:0 
我终于找到错误了!是名空间的问题! 改成这样就好了
#include <iostream>
#include <iomanip>
using namespace std;
class Time{
int hour,minute,second;
public:
void set(int h,int m,int s){hour=h,minute=m,second=s;}
friend Time& operator++(Time& a);
friend Time operator++(Time& a,int);
friend ostream& operator<<(ostream& out,const Time& t);
};
Time& operator++(Time& a){
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60))
a.hour=(a.hour+1)%24;
return a;
}
Time operator++(Time& a,int){
Time t(a);
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60))
a.hour=(a.hour+1)%24;
return t;
}
ostream& std::operator<<(ostream& out,const Time& t){
out<<setfill('0')<<setw(2)<<t.hour<<":"<<setfill('0')<<setw(2)<<t.minute<<":";
return out<<setw(2)<<t.second<<"\n"<<setfill(' ');
}
int main(){
Time t;
t.set(11,59,58);
cout<<t++;
cout<<++t;
}
二楼的也是正解哈! 直接载入
#include <iostream.h>
#include <iomanip.h> 不使用名空间std, 也能成功!谢谢大家的帮助哈! 我没用其他的编译器,VC6还是很不错的哈!

为了我的游戏事业而奋斗
2006-10-30 18:25
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
不是命名空间的问题,本来程序运行的好好的,经过你的修改vc7和gcc都不能通过编译
如果说这段程序能在VC6中通过的话,那我只能说我当初选择放弃VC6时多么明智的选择

以下分别是vc7和gcc的出错信息

------ 已启动生成: 项目: Test, 配置: Debug Win32 ------

正在编译...
main.cpp
f:\Projects\Test\main.cpp(23) : error C2244: “operator`<<'” : 无法将函数定义与现有的声明匹配
f:\Projects\Test\main.cpp(23) : 参见“operator`<<'”的声明
f:\Projects\Test\main.cpp(23) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译

Test - 2 错误,0 警告


--------------------Configuration: Test - Debug--------------------
Compiling source file(s)...
main.cpp
..\Test\main.cpp:23: error: `std::ostream& std::operator<<(std::ostream&, const
Time&)' should have been declared inside `std'
..\Test\main.cpp: In function `std::ostream& std::operator<<(std::ostream&,
const Time&)':
..\Test\main.cpp:5: error: `int Time::hour' is private
..\Test\main.cpp:24: error: within this context
..\Test\main.cpp:5: error: `int Time::minute' is private
..\Test\main.cpp:24: error: within this context
..\Test\main.cpp:5: error: `int Time::second' is private
..\Test\main.cpp:25: error: within this context
..\Test\main.cpp: In function `int main()':
..\Test\main.cpp:30: error: ambiguous overload for 'operator<<' in 'std::cout
<< operator++(Time&, int)(0)'
..\Test\main.cpp:23: error: candidates are: std::ostream&
std::operator<<(std::ostream&, const Time&)
..\Test\main.cpp:10: error: std::ostream&
operator<<(std::ostream&, const Time&)
..\Test\main.cpp:31: error: ambiguous overload for 'operator<<' in 'std::cout
<< operator++(Time&)((&t))'
..\Test\main.cpp:23: error: candidates are: std::ostream&
std::operator<<(std::ostream&, const Time&)
..\Test\main.cpp:10: error: std::ostream&
operator<<(std::ostream&, const Time&)

Test.exe - 13 error(s), 0 warning(s)


2006-10-30 20:49
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
收藏
得分:0 
我觉得如果只学c++而不用MFC的话,还不如用gcc for win,毕竟vc6太老了,许多语言特性都不支持

2006-10-30 20:52
快速回复:为什么我的VC不能通过?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030390 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved