如何执行重写的方法 C++

How to execute overrided method C++

我将尝试创建一个结构来在派生 class 中执行重写的方法。 我的基本代码结构:

Base.h 已编辑

class Base 
{
protected:
    virtual void Initialize() = 0;
    virtual void Update() = 0;
public:
    void Init();
    void Upd();
};

Base.cpp

#include "Base.h"

void Base::Initialize() {}
void Base::Update() {}

void Base::Init() {
    // Some logic

    Initialize();
}

void Base::Upd() {
    // Some logic

    Update();
}

下面的class是class继承自其他N个实现Initialize()和Update()的classes:

Behaviour.h

#include <iostream>
#include "Base.h"

class Behaviour : public Base 
{
protected:
    virtual void Initialize();
    virtual void Update();
};

Behaviour.cpp

#include "Behaviour.h"

void Bheaviour::Initialize() {
    std::cout << "Initialize called!" << std::endl;
}

void Bheaviour::Update() {
    std::cout << "Update called!" << std::endl;
}

然后我想在 Base class 中执行时执行 Behavior Initialize() 和 Update()。我的主要功能是:

Core.cpp 已编辑

#include "Behaviour.h"

int main() {
    Base* base = new Behaviour();

    base->Init();
    while(!quit) {
        base->Upd();
    }
}

提前感谢您的任何建议!

谢谢大家的建议,我已经解决了!

改变Base* base = new Base();

Base* base = new Bheviour;

多态性会处理其他一切。 如果您不想从基础 class 中创建对象,最好将其声明为抽象对象 class.