[英]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.