我是C ++的新手,所以我已经习惯了这种环境下函数和变量的范围。我无法解决的一个问题是能够调用在类的子类中定义的函数,该类将此函数声明为纯虚函数。这是我的课程结构:
class Clock{
public:
virtual void Tick() = 0;
std::string Print();
//Mutators
int Seconds();
int Minutes();
int Hours();
void setTime(int secs, int mins, int hours);
//Accessors
int getSecs(){ return _secs; }
int getMins(){ return _mins; }
int getHrs(){ return _hours; }
private:
int _secs, _mins, _hours, _days = 0;
};
class NormalClock : public Clock{
public:
void Clock::Tick();
private:
};
class AlarmClock : public Clock{
public:
void Clock::Tick();
bool CheckAlarm();
void SetAlarmTime(int hrs, int mins, int secs);
int GetAHrs();
int GetAMins();
int GetASecs();
private:
int _alarmhrs, _alarmmins, _alarmsecs;
};
我想在源文件Tick()
中为AlarmClock
类中的函数定义一个主体。但是在此函数中,我想Tick()
从其超类(即NormalClock
该类)中调用该函数。我的问题是,这样做时我没有定义要使用的任何对象,因此无法调用超类Tick()
函数,因为我的IDE(VS2013)认为我是Tick()
从当前类(AlarmClock
子类)引用的。我在网上四处张望,并确定它可能需要使用using
关键字,但是我未能正确实现它。这是我要构建的功能以供参考:
void AlarmClock::Tick(){
NormalClock::Clock::Tick();
if (this->CheckAlarm()){ cout << "\nAlarm! @ " << this->Print() << "\n\n"; }
}
像上面那样调用函数时,VS中没有错误,但是编译器抱怨静态引用了一个非静态成员,这是可以理解的。
您很亲近,但是您的代码有一些问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句