Как выполнить переопределенный метод C ++ - PullRequest
1 голос
/ 22 сентября 2019

Я попытаюсь создать структуру для выполнения переопределенного метода в производном классе.Моя базовая структура кода:

Base.h EDITED

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 - это класс, который должен быть унаследован от N других классов, которые реализуют Initialize () и Update (), а затем:

Behaviour.h

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

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

Поведение.cpp

#include "Behaviour.h"

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

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

Затем я хочу выполнить Behavior Initialize () и Update (), когда выполняется в базовом классе.Моя основная функция:

Core.cpp EDITED

#include "Behaviour.h"

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

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

Заранее благодарен за любые предложения!

Спасибо за все предложения, я решил!

1 Ответ

4 голосов
/ 22 сентября 2019

Измените Base* base = new Base();

на

Base* base = new Bheviour;

, и полиморфизм позаботится обо всем остальном.Если вы не хотите создавать объект из базового класса, лучше объявить его абстрактным классом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...