重新定义类C ++

时间:2017-05-23 04:33:50

标签: 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();
}

Clock.h

#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

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

1 个答案:

答案 0 :(得分:2)

作为@Craig Young points out in the comments,您已经实施了您的Clock构造函数。

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

只需更改头文件,以便它只声明构造函数:

Clock();

并在源文件中实现它:

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

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