又一个"未找到成员声明"

Yet another 'member declaration not found'

本文关键字:成员 声明 又一个      更新时间:2023-10-16
我已经有

一段时间没有写过任何C++了,我只是想做一个简单的程序来复制不同类型的时钟来刷新我的记忆。

我从编写一个Clock超类开始,并为除构造函数/析构函数之外的每个方法获取了Member declaration not found。我认为这是某个地方的小错误,但我无法发现任何东西。

时钟.h

/*
 * Clock.h
 */
#ifndef CLOCK_H_
#define CLOCK_H_
class Clock {
private:
    int seconds;
    int minutes;
    int hours;
public:
    Clock();
    Clock(int, int, int);
    virtual ~Clock();
    virtual void tick() = 0;
    void setTime(int, int, int);
    void print();
};
#endif /* CLOCK_H_ */

时钟.cpp

/*
* Clock.cpp
 */
#include "Clock.h"
#include <iostream>
Clock::Clock() {
    seconds = 0;
    minutes = 0;
    hours = 0;
}
Clock::Clock(int secs, int mins, int hrs) :
        seconds(secs), minutes(mins), hours(hrs) {
}
Clock::~Clock() {
    // TODO Auto-generated destructor stub
}
Clock::setTime(int secs, int mins, int hrs) {
    seconds = secs;
    minutes = mins;
    hours = hrs;
}
Clock::print() {
    std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}

我怀疑错误消息有点长,这将有助于整体查看它。
话虽如此,错误可能是由于您的定义应该是:

void Clock::setTime(int secs, int mins, int hrs) { /* ... */ } 

而不是:

Clock::setTime(int secs, int mins, int hrs) { /* ... */ } 

也就是说,在您的情况下缺少返回类型。
这同样适用于print

实现文件 (Clock.cpp( 中缺少以下方法的返回类型。

Clock::setTime(int secs, int mins, int hrs) {
    seconds = secs;
    minutes = mins;
    hours = hrs;
}
Clock::print() {
    std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}

应该是

void Clock::setTime(int secs, int mins, int hrs) {
    seconds = secs;
    minutes = mins;
    hours = hrs;
}
void Clock::print() {
    std::cout << hours << ":" << minutes << ":" << seconds << std::endl;
}