初学者问题:书上例题编译不能通过?详细请进!

dipingxian 2005-09-01 09:56:47
环境:Dev-C++
代码:
//clock.h
class clock
{
private:
int hour,minute,second;
public:
void init();
void update();
void display();
};

//clock.cpp
#include <iostream>
#include <stdlib.h>
#include "clock.h"
using namespace std;

void clock::init()
{
hour = minute = second = 0;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 60)
{
hour = 0;
}
}

void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl; //错误1
}

int main(int argc, char *argv[])
{
clock clockA; //错误2
cout<<"CLOCK A:"<<endl; //....
clockA.init();
for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}


错误:
1.clock.cpp syntax error before string constant
2.clock.cpp `clock' undeclared (first use this function)
...全文
132 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dipingxian 2005-09-05
  • 打赏
  • 举报
回复
谢谢大家!
问题解决:
错误一: 是拼写错误,在minute之后的那个“:”放置的位置错误
错误二: 在VC编译顺利通过,估计是我的IDE设置问题。

另外:
if(hour == 60) //这里应该是24吧?
{
hour = 0;
}

这个地方逻辑错误:应该是hour==24

C++的语法太灵活了 ,吓死人!
zhouhuahai 2005-09-02
  • 打赏
  • 举报
回复
楼主的设计不好,应该显式提供一个构造函数(在其中调用init函数).并且要检查各成员值.
否则有点像用了singleTon了!

#include<iostream>
using namespace std;
class clock
{
private:
int hour,minute,second;
public:

clock(int h = 0, int m = 0, int s =0)
{
init(h, m, s);
}

void init();
void update();
void display();
};
void clock::init(int h, int m, int s)
{
hour = h % 24; //之所以要取模是因为防止出现错误赋值.
minute = m & 60;
second = s % 60;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 24) //这里应该是24吧?
{
hour = 0;
}
}
void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
}

int main(int argc, char *argv[])
{
cout<<"CLOCK A:"<<endl;
clock clockA(12, 45, 16);

for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}
zhousqy 2005-09-02
  • 打赏
  • 举报
回复
的确:
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
qfeng_zhao 2005-09-02
  • 打赏
  • 举报
回复
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl;
改为
cout<<"Now Time: "<<hour<<":"<<minute << ":"<<second<<endl;
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
奇怪~
楼主在我的编译器上面调试通过~
结果为:
CLOCK A:
Now Time: 0:0:1
Now Time: 0:0:2
Now Time: 0:0:3
Now Time: 0:0:4
Now Time: 0:0:5
Now Time: 0:0:6
Now Time: 0:0:7
Now Time: 0:0:8
Now Time: 0:0:9
Now Time: 0:0:10
foochow 2005-09-01
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class clock
{
private:
int hour,minute,second;
public:
void init();
void update();
void display();
};
void clock::init()
{
hour = minute = second = 0;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 60)
{
hour = 0;
}
}
void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
}

int main(int argc, char *argv[])
{
clock clockA;
cout<<"CLOCK A:"<<endl;
clockA.init();
for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}

snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
我在VC和Dev C++调试都没有
2.clock.cpp `clock' undeclared (first use this function)
错误~
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
下面
clock clockA; //错误2
没有错误啊~
调试可以啊~
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
是啊~
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl; //错误1
error C2143: syntax error : missing ';' before 'string'
有问题~
改为
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
  • 打赏
  • 举报
回复
第二个可能是找不到头文件路径吧,不是很清楚。把头文件代码考到.cpp文件再试一下看
  • 打赏
  • 举报
回复
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl;
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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