繁体   English   中英

将成员函数作为参数传递给不同标头中的父类

[英]Pass member function as parameter to a parent class in a different header

考虑两个类。 一个是名为events.h的头文件中的 EventReceiver,它定义了一个方法 Subscribe,它接受一个名称参数和一些回调函数,以及一个在名为 Entity 的头entities.h中派生 EventReceiver 的类,它定义了一个方法 OnStart,它必须在构造函数中名为"start"事件上调用。

事件.h

class EventReceiver
{
public:
    void SubscribeEvent(string name, callback_type callback);
}

实体.h

#include "events.h"

class Entity : public EventReceiver
{
public:
    Entity();
    void OnStart();
}

我将如何做到这一点? callback_type应该是什么类型来接受 OnStart 函数,因为由于依赖循环,我不能在EventReceiver其声明为void (Entity::*)() ,并且不能传递指向OnStart的指针,因为它是非静态的?

如果你要走std::function路线,它可能看起来像:

// events.h:
using callback_type = std::function<void()>;

// entities.h (the constructor):
Entity() {
    SubscribeEvent("start", [this](){ OnStart(); });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM