我試圖在我的專案中使用 EventListener 模式(而不是觀察者)。基本上:
Entitys 可以將自己注冊為某些型別的Events 的偵聽器EntityS可上報Event到EventListener。- 當一個
Event被報告時,EventListener將通知Entity注冊為接收這種型別的實體Event。
這兩個類是:
class Entity:
void Register(std::string type); // calls EventListener::RegisterListener(this, type);
void ReportEvent(Event event); // calls EventListener::BroadcastEvent(event);
void OnNotify(Event event); // called by EventListener::BroadcastEvent(event);
class EventListener:
void RegisterListener(Entity* listener, Event event);
void BroadcastEvent(Event event); // calls Entity::OnNotify(event) for all relative Entity instances
請注意,在Entity::ReportEvent()呼叫EventListener::RegisterListener()和EventListener::BroadcaseEvent()呼叫中Entity::OnNotify()。做一個簡單的前向宣告不能啟用這種雙鏈接呼叫。我該怎么辦?我可以直接#include在他們的.hpp檔案中互相訪問嗎(我非常懷疑)?
uj5u.com熱心網友回復:
解決方案比我想象的要容易得多。可以直接#include將頭檔案相互關聯。請記住添加標題守衛 ( #ifndef ENTITY_HPP #define ENTITY_HPP #endif)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363993.html
上一篇:前后條件的強化和弱化
