繁体   English   中英

重新定义C ++类

[英]Redefinition of a class C++

我正在开发一个时钟程序,并且Clock外部类有问题,它在Clock.cpp文件中给我错误“ Clock :: Clock()的重新定义”

Clock.cpp

#include <iostream>
#include <iomanip>
#include "Counter.h"
#include "Clock.h"

using namespace std;

Clock::Clock()
{
}

void Clock::Tick() {
    _seconds.Increment();
    if (_seconds.Value() == 60)
    {
        _seconds.Reset();
        _minutes.Increment();
        if (_minutes.Value() == 60)
        {
            _minutes.Reset();
            _hours.Increment();
            if (_hours.Value() == 24)
                _hours.Reset();
        }
    }
}

void Clock::Reset()
{
    _hours.Reset();
    _minutes.Reset();
    _seconds.Reset();
}

void Clock::PrintTime()
{
    cout << setfill('0') << setw(2) << _hours.Value() << ":";
    cout << setfill('0') << setw(2) << _minutes.Value() << ":";
    cout << setfill('0') << setw(2) << _seconds.Value();
}

时钟

#ifndef CLOCK_H
#define CLOCK_H

class Clock
{
    private:
        Counter _hours;
        Counter _minutes;
        Counter _seconds;

    public:
        Clock(): _hours("hours"), _minutes("minutes"), _seconds("seconds"){};
        void Tick();
        void Reset();
        void PrintTime();
};

#endif // CLOCK_H

标头保护包含在内,但编译器不断给出错误:/任何帮助将不胜感激。

正如@Craig Young在评论中指出的那样 ,您已经实现了Clock构造函数。

Clock(): _hours("hours"), _minutes("minutes"), _seconds("seconds"){};

只需更改头文件,使其仅声明构造函数即可:

Clock();

并在源文件中实现它:

Clock::Clock(): _hours("hours"), _minutes("minutes"), _seconds("seconds")
{
}

将声明保留在头文件中,将实现保留在源文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM