2017-02-09 68 views
1

自从我编写任何C++以来,我只是试图制作一个简单的程序来复制不同类型的时钟来刷新我的记忆。另一个'成员声明未找到'

我已经开始编写一个Clock超类,并且获得了除构造函数/析构函数以外的每种方法的Member declaration not found。我认为这是一个小错误,但我什么也找不到。

Clock.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_ */ 

Clock.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; 
} 

回答

1

我怀疑错误消息是有点长,这将有助于把它看成一个整体。
话虽这么说,错误可能是由于这样的事实,你的定义应该是:

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

相反的:

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

也就是说,返回类型错过了你的情况。
这同样适用于print

0

实现文件(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; 
} 
相关问题