我有這個問題:
我有一個呼叫事件函式 do() 的事件管理器
Event *p;
//p takes it values from an Event Queue
p->do()
一些事件有兩個屬性 Object a 和 b
class EventX : public Event {
public :
EventX();
void do(){actionX(a, b)}
private :
Object a;
Object b;
bool bothSide;
};
class EventY : public Event {
public :
EventY();
void do(){actionY(a,b);}
private :
Object a;
Object b;
bool bothSide;
};
do() 是一個執行從 a 到 b 的動作的函式。如果 bothSide 屬性為真,我想創建一個可以從 a 到 b 呼叫 do() 和從 b 到 a 呼叫 do() 的介面。那可能嗎 ?我有許多帶有不同 do() 函式的事件,它們執行從 a 到 b 的不同操作。
感謝您閱讀
uj5u.com熱心網友回復:
你可以有另一個界面的額外層
struct EventAB : Event
{
void do() final { if (bothSide) action(b, a); action(a, b); }
virtual void action(Object&, Object&) = 0;
/*...*/
private:
Object a;
Object b;
bool bothSide = false;
};
接著
class EventX : public EventAB {
public:
void action(Object& lhs, Object& rhs) override { actionX(lhs, rhs); }
// ...
};
class EventY : public EventAB {
public:
void action(Object& lhs, Object& rhs) override { actionY(lhs, rhs); }
// ...
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383120.html
下一篇:從Python中的元類繼承
