簡體   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