我正在研究一个时钟程序并且遇到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
包含标头保护但编译器不断给出错误:/ 任何帮助将不胜感激。
答案 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")
{
}
将您的声明保留在头文件中,并在源文件中实现。