QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1335|回复: 15

在c++中使用类的问题

[复制链接]
发表于 2003-10-23 22:52:42 | 显示全部楼层 |阅读模式
今天开始学c++中的类了
但是第一个程序就被g++给出了一大堆错误,错误如下
1.cc:14: semicolon missing after declaration of `clock'
1.cc:15: ISO C++ forbids defining types within return type
1.cc:15: two or more data types in declaration of `settime'
1.cc:15: prototype for `clock clock::settime(int, int, int)' does not match any
   in class `clock'
1.cc:8: candidate is: void clock::settime(int = 0, int = 0, int = 0)
1.cc:15: `clock clock::settime(int, int, int)' and `void clock::settime(int =
   0, int = 0, int = 0)' cannot be overloaded
1.cc:15: semicolon missing after declaration of `class clock'
1.cc: In member function `int clock::settime(clock*, int, int, int)':
1.cc:17: `mimute' undeclared (first use this function)
1.cc:17: (Each undeclared identifier is reported only once for each function it
   appears in.)
1.cc: In function `int main()':
1.cc:28: `clock' undeclared (first use this function)
1.cc:28: parse error before `;' token
1.cc:30: `myclock' undeclared (first use this function)

明明是一开始就定义了的类,后面却说没有定义的类
请问这是为什么?
发表于 2003-10-23 23:14:36 | 显示全部楼层
那个。。。你把代码贴出来我们才能帮你呀~
回复

使用道具 举报

发表于 2003-10-23 23:21:30 | 显示全部楼层
我晕,真的很多啊!!!
回复

使用道具 举报

 楼主| 发表于 2003-10-24 10:25:36 | 显示全部楼层
代码如下:
#include<iostream>
using namespace std;

class clock
{
  public:
   void settime(int newh=0,int newm=0,int news=0);
   void showtime();
  private:
   int hour,minute,second;
}

void clock::settime(int newh,int newm,int news)
{
  hour=newh;
  mimute=newm;
  second=news;
}

inline void clock::showtime()
{
  cout&lt;&lt;hour&lt;&lt;":"&lt;&lt;minute&lt;&lt;":"&lt;&lt;second&lt;&lt;endl;
}

int main()
{
  clock myclock;
  cout&lt;&lt;"first time set and output:"&lt;&lt;endl;
  myclock.settime();
  myclock.showtime();
  cout&lt;&lt;"second time set and output:"&lt;&lt;endl;
  myclock.settime(8,30,30);
  myclock.showtime();
}

谢谢你们先
回复

使用道具 举报

发表于 2003-10-24 12:51:17 | 显示全部楼层
[code:1]
class clock
&#123;
public&#58;
void settime&#40;int newh=0,int newm=0,int news=0&#41;;
void showtime&#40;&#41;;
private&#58;
int hour,minute,second;
&#125;
[/code:1]
哈哈,你少了一个分号吧?
应该是这样:

class clock
{
public:
void settime(int newh=0,int newm=0,int news=0);
void showtime();
private:
int hour,minute,second;
} ;


写代码的时候要经常主意有没有忘了分号,或者有没有把分号打成冒号~
回复

使用道具 举报

 楼主| 发表于 2003-10-24 16:50:47 | 显示全部楼层
谢谢了
问题已经解决了
有三个错误
1.少了一个分号
2.一处拼写错误
3.类名第一个字母必须大写
回复

使用道具 举报

发表于 2003-10-24 22:57:51 | 显示全部楼层
类名第一个字母必须大写吗?
我好像也有首字母小写的类呀~~
回复

使用道具 举报

 楼主| 发表于 2003-10-25 15:25:48 | 显示全部楼层
我也觉得奇怪啊
小写的时候就是提示错误的
改为大写了就好了,没有错误了
你是用什么调试工具的?

g++?
回复

使用道具 举报

发表于 2003-10-26 16:16:23 | 显示全部楼层
好象是c++建议要大写的,可能这里是强行的要执行!
回复

使用道具 举报

发表于 2003-10-31 20:46:09 | 显示全部楼层
没有这个规定的。
回复

使用道具 举报

发表于 2003-10-31 21:17:33 | 显示全部楼层
有的
你再仔细看看书,再看一些原代码也是大写的!
回复

使用道具 举报

发表于 2003-10-31 21:23:22 | 显示全部楼层
试一下就知道了,下面例子
class clock
{
};
int main()
{
    clock test;
    return 0;
}
编译肯定能够通过的,我在想他的问题是不是因为用了
using namespace std;
是不是因为现在GNU的G++的标准库里面自己已经定义了clock这个名字,所以导致他的错误。比如已经在STD里面定义了vector,你再使用时就不能在STD这里面再定义vector了
可是我手上没有G++编译器。
回复

使用道具 举报

 楼主| 发表于 2003-11-1 08:35:44 | 显示全部楼层
也有可能
我试试看
回复

使用道具 举报

 楼主| 发表于 2003-11-1 08:45:52 | 显示全部楼层
是这样的
我把clock改为了clock1就行了
没有出现错误的
谢谢各位了!
回复

使用道具 举报

发表于 2003-11-1 19:07:26 | 显示全部楼层
我觉得你定义的类还是可能出现错误的
你的私有成员都没有初始化,你应该定义够造函数来初始化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 10:25 , Processed in 0.043579 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表