簡體   English   中英

在抽象類之間傳遞數據

[英]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派生的Callback1Callback2 因此,代碼可能類似於:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM