称为Clock的类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了称为Clock的类相关的知识,希望对你有一定的参考价值。

我需要创建一个名为Clock的类。在其中,它需要一个默认的构造函数,一个接受秒的构造函数以及一个接受小时,分钟和秒的构造函数。它需要设置h / m / s,获取h / m / s,增加/减少秒数,增加任意秒数的公共成员函数。它需要将hms转换为sec的私人成员,反之亦然。

有一个预写的代码可以实现我的课程。

最大的错误似乎是在说:

“ void”前应有预期的不合格ID

非常感谢。我希望这不是太多阅读。

我不知道是什么给了我错误消息。我是C ++的新手,关于错误的研究也无济于事。

#ifndef Clock
#define Clock



class Clock

    private:

    int hour;
    int minute;
    int second;

    int hms_to_sec() const;
    void sec_to_hms(int seconds);

    public:

    Clock();
    Clock(int seconds);
    Clock(int hours, int minutes, int seconds);


    void set_hour(int hours);
    void set_minute(int minutes);
    void set_second(int seconds);

    void add_seconds(int seconds);

    int get_hour() const;
    int get_minute() const;
    int get_second() const;

    void increment();
    void decrement();


;

#endif




#include "lab8Clock.h"



Clock::Clock()
    hour=0;
    minute=0;
    second=0;


Clock::Clock(int seconds)
    if(seconds>=86400)
        hour=0;
        minute=0;
        second=0;
        return;
    

    sec_to_hms(seconds);

Clock::Clock(int hours, int minutes, int seconds)


    if(hours<0 || minutes<0 || seconds<0)
        hour=00;
        minute=00;
        second=00;
        return;

    
    if(hours>=24 || minutes>=60 || seconds>=60)
        hour=00;
        minute=00;
        second=00;
        return; 
    
    hour=hours;
    minute=minutes;
    second=seconds;




void Clock::sec_to_hms(int seconds)
    int h=0, m=0, s=seconds;
    for(int i=0; i<=seconds; i++)
    
        if(i%60==0&&i>0;)
            m++;
            s-=60;
        
    
    for(int j=0; j<=minutes; j++)
        if(j%60==0&&j>0)
            h++;
            m-=60;
        
    hour=h;
    minute=m;
    second=s;



int Clock::hms_to_sec() const
    int s;
    s+=(hour*3600);
    s+=(minute*60); 
    s+=second;
    return s;


void Clock::set_hour(int hours)
    if(hours>=24 || hours<0)
        return;

    hour=hours;

void Clock::set_minute(int minutes)
    if(minutes>=60 || minutes<0)
        return;

    minute=minutes;

void Clock::set_second(int seconds)
    if(seconds>=60 || seconds<0)
        return;

    second=seconds;


void Clock::add_seconds(int seconds)

    int s=seconds,m=0, h=0;
    int holder;
    if(seconds<0)
        return;


    if((second+=seconds)>86400)
        return;
    for(int k=0; k<seconds; k++)
        if(k%60==0 && k>0)
            m++;
            s-=60;

         holder=m;
    
    for(int k=0; k<holder; k++)
        if(k%60==0 && k>0)
            h++;
            m-=60;
        
    
    hour+=h;
    minute+=m;
    second+=s;



int Clock::get_hour() const
    return hour;

int Clock::get_minute() const
    return minute;

int Clock::get_second() const
    return second;


void Clock::increment()
    int i;
    i=hms_to_sec();
    if(i==86399)
        hour=0;
        minute=0;
        second=0;
        return;
    
    add_seconds(1);

void Clock::decrement()
    int i;
    if(i==0)
        return;

    second--;


错误示例(“秒,分钟,小时”是Clock的成员变量:]

In file included from lab8exa.cpp:12:0:

lab8Clock.h:19:8: error: expected unqualified-id before ‘void’
  Clock(void);
        ^~~~

lab8Clock.h:19:8: error: expected ‘)’ before ‘void’


lab8clock.cpp:59:2: error: ‘minute’ was not declared in this scope
  minute=m;
  ^~~~~~

lab8clock.cpp:59:2: note: suggested alternative: ‘int’
  minute=m;
  ^~~~~~


lab8clock.cpp:60:2: error: ‘second’ was not declared in this scope
  second=s;
  ^~~~~~


lab8clock.cpp: At global scope:
lab8clock.cpp:64:25: error: explicit qualification in declaration of ‘int hms_to_sec()’
 int Clock::hms_to_sec() const
                         ^~~~~

lab8clock.cpp:64:25: error: non-member function ‘int hms_to_sec()’ cannot have cv-qualifier

lab8clock.cpp:141:23:错误:“ void decrement()”声明中的显式限定无效Clock :: decrement()^

答案

您的头文件中的#endif位置不正确。 #endif应该在类声明后的头文件末尾。

另外,#ifndefine Clock和#define Clock会由于其类的确切名称而产生错误。将其更改为Clock__H__或类似的名称。

最后,像46岁,你有一个额外的;在if陈述中,我相信51分钟应该不是分钟。经过这些更改,代码正在为我编译。

最后一件事,在使用s之前>]

s+= ...

您需要为s设置一个值(s = 0)。为了使+ =运算符起作用,某些值必须已经在s

以上是关于称为Clock的类的主要内容,如果未能解决你的问题,请参考以下文章

clock时钟

定义时钟clock类

clock_gettime的介绍说明

C++编程,clock置换算法

std::system_clock 和 std::steady_clock 之间的区别?

请问C语言中clock()函数该怎么用?