[英]Passing Data Between abstract classes
我正在尋找有關最佳OO方法的意見,以實現我將要描述的內容。 我正在寫將成為游戲之類的事件系統的東西,我希望它盡可能地可擴展,因為有很多抽象類。 其中兩個是分配給一個事件的監視器,另一個是回調,它們包裝了事件發生時要調用的函數指針。 當我要發送回調所需的數據時,就會出現問題。 將要發送的數據將是特定於子類的(取決於功能簽名),並將存儲在子類的監視器中。 我希望能夠在調用execute之前將這些數據傳遞給回調,但是由於從監視器的角度看一切都是抽象的,所以這很困難。 我正在尋找有關如何以最佳的OO方法執行此操作的建議,但到目前為止,我還沒有提出我太喜歡的東西。 由於將回調發送到另一個類以進行實際分派,因此數據需要在某個時刻最終在它們內部結束。
供參考,監視器抽象類
#pragma once
#include "DIVE_GUI_Types.h"
#include "DIVE_GUI_Callback.h"
#include "DIVE_GUI_Event_Dispatcher.h"
#include <map>
#include <string>
/*
Class to monitor events to be handled by the event system.
*/
class DIVE_GUI_Event_Monitor
{
private:
friend class DIVE_GUI_Kernel;
DIVE_GUI_Event_Dispatcher* m_Dispatcher;
static DIVE_HANDLE m_Active_GUI;
protected:
const std::string m_Event_ID;
std::map<DIVE_HANDLE, DIVE_GUI_Callback*> m_GUI_Map;
virtual bool Dispatch() = 0;
public:
void Update();
std::string Get_Event_ID() const { return m_Event_ID; }
DIVE_GUI_Event_Monitor(const std::string& id) : m_Event_ID(id) { }
void Add_Callback(DIVE_HANDLE, DIVE_GUI_Callback* function);
};
和回調抽象類
#pragma once
/*
Abstract class representing a wrapper for a callback function as per the Command design pattern.
*/
class DIVE_GUI_Callback
{
public:
virtual void Excecute_Callback() const = 0;
};
任何和所有的意見/建議表示贊賞。 謝謝!
如果我正確理解了您,則應將此數據提供給回調構造函數。 假設您有從DIVE_GUI_Callback
派生的Callback1
和Callback2
。 因此,代碼可能類似於:
DIVE_GUI_Event_Monitor* monitor;
monitor->Add_Callback(Callback1(specific_data_1));
monitor->Add_Callback(Callback2(specific_data_2));
然后,此特定數據將在Excecute_Callback()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.