C ++调用相同虚函数的超类函数

kmahon99

我是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中没有错误,但是编译器抱怨静态引用了一个非静态成员,这是可以理解的。

韦恩·坦纳(Wayne Tanner)

您很亲近,但是您的代码有一些问题。

  1. AlarmClock不会从NormalClock继承
  2. 在AlarmClock :: Tick中调用NormalClock :: Tick()而不是NormalClock :: Clock :: Tick()
  3. 在NormalClock中,更改Clock :: Tick以在您的类声明中打勾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:从同一类的成员函数调用纯虚函数

来自分类Dev

在C ++中从派生类的析构函数调用虚函数

来自分类Dev

C ++纯虚函数调用的性能差异

来自分类Dev

类有虚函数吗?C ++

来自分类Dev

如何将C ++类转换为托管类并在其中调用纯虚函数?

来自分类Dev

C ++继承:使用派生类的实例调用基类的虚函数

来自分类Dev

为什么“基类对象”不能调用它自己的虚函数?C ++

来自分类Dev

C ++:用指向派生类的指针进行的虚函数调用是否仍具有vlookup

来自分类Dev

C ++在构造函数中调用最终虚函数

来自分类Dev

如何调用在C ++中具有抽象基类和派生类的定义的基类的虚函数定义?

来自分类Dev

C ++虚函数覆盖

来自分类Dev

C ++虚函数

来自分类Dev

C ++虚函数覆盖

来自分类Dev

使用虚函数的C ++

来自分类Dev

调用子重写时始终调用超类虚函数

来自分类Dev

C ++ 11线程,错误调用了纯虚函数

来自分类Dev

C ++:通过调用纯虚函数避免重复

来自分类Dev

使用纯虚函数定义在C ++类之外?

来自分类Dev

C ++:正确覆盖模板类中的虚函数

来自分类Dev

C ++:正确覆盖模板类中的虚函数

来自分类Dev

使用纯虚函数在C ++类之外定义?

来自分类Dev

具有纯虚函数的模板类的C ++语法?

来自分类Dev

带虚函数的C++派生类

来自分类Dev

调用姐妹类C ++的函数

来自分类Dev

虚函数不称为C ++

来自分类Dev

虚函数不称为C ++

来自分类Dev

C ++虚函数和线程

来自分类Dev

C ++如何使用具有超类指针的子类调用函数

来自分类Dev

构造函数中的C ++虚函数