如何执行重写的方法 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.
我将尝试创建一个结构来在派生 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.